FairRoot/PandaRoot
Classes | Functions
PndFTSCAParam.h File Reference
#include "PndFTSCADef.h"
#include "PndFTSVector.h"
#include "PndFTSCAMath.h"
#include "PndFTSCATrackParam.h"
#include "PndFTSCAParameters.h"
#include "FTSCAStation.h"
#include "CAFieldValue.h"
#include <cstdio>

Go to the source code of this file.

Classes

class  PndFTSCAParam
 

Functions

std::istreamoperator>> (std::istream &, PndFTSCAParam &)
 
std::ostreamoperator<< (std::ostream &, const PndFTSCAParam &)
 

Function Documentation

std::ostream& operator<< ( std::ostream ,
const PndFTSCAParam  
)
std::istream& operator>> ( std::istream ,
PndFTSCAParam  
)

Definition at line 159 of file PndFTSCAParam.cxx.

References PndFTSCAParam::cBz(), FTSCAStation::CellLength, FTSCAStripInfo::cos, cos(), exit(), FTSCAStation::f, PndFTSCAParam::fBz, PndFTSCAParam::fMaxR, PndFTSCAParam::fMaxZ, PndFTSCAParam::fMinR, PndFTSCAParam::fMinZ, PndFTSCAParam::fNStations, PndFTSCAParam::fStations, PndFTSCAParam::fVtxFieldValue, i, log(), FTSCAStation::NDF, FTSCAStripInfo::sin, sin(), FTSCAStation::x0, FTSCAStation::xOverX0, and FTSCAStation::xTimesRho.

160 {
161  // Read settings from the file
162  in >> p.fNStations;
163  if(p.fStations) delete [] p.fStations;
164  p.fStations = new FTSCAStation[p.fNStations];
165  in >> p.fBz;
166 
167  for(int i=0; i<p.fNStations; i++)
168  {
169  float inttmp;
170  in >> inttmp;
171  if( inttmp != i ) {
172  cout << "ERROR: Settings.data format is wrong! Station: " << i-1 << endl;
173  exit(0);
174  }
175  in >> p.fStations[i].x0;
176 #ifdef PANDA_FTS
177  in >> p.fStations[i].materialInfo.RadThick;
178  p.fStations[i].materialInfo.RadThick *= 10.f; //TODO !!!!!!! put correct material
179  p.fStations[i].materialInfo.logRadThick = log( p.fStations[i].materialInfo.RadThick );
180  float xTimesRho;
181  in >> xTimesRho;
182  p.fStations[i].materialInfo.thick = xTimesRho/1.39; // ~54 mum mular
183  p.fStations[i].materialInfo.RL = p.fStations[i].materialInfo.thick/p.fStations[i].materialInfo.RadThick;
184 #else
185  in >> p.fStations[i].xOverX0;
186  in >> p.fStations[i].xTimesRho;
187 #endif
188 
189  float beta;
190  in >> beta;
191  p.fStations[i].f.sin = sin(beta);
192  p.fStations[i].f.cos = cos(beta);
193  //std::cout<<"p.fStations[i].f.sin "<<p.fStations[i].f.sin<<" p.fStations[i].f.cos "<<p.fStations[i].f.cos<<std::endl;
194  in >> inttmp;
195  p.fStations[i].NDF = inttmp;
196  in >> inttmp;
197  p.fStations[i].CellLength = inttmp;
198  }
199 
200 #ifdef STAR_HFT
201  p.fMaxZ = 35;
202  p.fMaxR = 25;
203  p.fMinR = 0;
204  p.fMinZ = -p.fMaxZ;
205 #elif ALICE_ITS
206  p.fMaxZ = 60;
207  p.fMaxR = 60;
208  p.fMinR = 0;
209  p.fMinZ = -p.fMaxZ;
210 #elif PANDA_STT
211  p.fMaxZ = 75+20;
212  p.fMaxR = 41;
213  p.fMinR = 0;
214  p.fMinZ = -75+20;
215 #elif PANDA_FTS
216  p.fMinX = -200; // more precisely 196
217  p.fMaxX = 200;
218  p.fMinY = -60;
219  p.fMaxY = 60;
220  p.fMinZ = 290;
221  p.fMaxZ = 660;
222 #endif
223 
224 #ifdef PANDA_FTS
225  // p.fVtxFieldValue[0].y = p.Bz();
226  // p.fVtxFieldValue[1].y = p.Bz();
227  // p.fZVtxFieldValue[0] = 0.f;
228  // p.fZVtxFieldValue[1] = 1.f;
229  // for(int i=0; i<p.fNStations; i++)
230  // p.fStations[i].fieldSlice.cy[0] = p.Bz();
231 // if(1){ // read field
232 // float tmp;
233 // for( int i = 0; i < 2; i++ ) {
234 // in >> tmp;
235 // p.fZVtxFieldValue[i] = tmp;
236 // in >> tmp;
237 // p.fVtxFieldValue[i].x = tmp;
238 // in >> tmp;
239 // p.fVtxFieldValue[i].y = tmp;
240 // in >> tmp;
241 // p.fVtxFieldValue[i].z = tmp;
242 // }
243 //
244 // in >> tmp >> tmp >> tmp >> tmp; // skip one point
245 //
246 // for(int iSta = 0; iSta < p.fNStations; iSta++) {
247 // #if 0
248 // int N;
249 // in >> N;
250 // for( int i = 0; i < N; i++ ) {
251 // in >> tmp;
252 // p.fStations[i].fieldSlice.cx[i] = tmp;
253 // }
254 // for( int i = 0; i < N; i++ ) {
255 // in >> tmp;
256 // p.fStations[i].fieldSlice.cy[i] = tmp;
257 // }
258 // for( int i = 0; i < N; i++ ) {
259 // in >> tmp;
260 // p.fStations[i].fieldSlice.cz[i] = tmp;
261 // }
262 // #else // 0
263 // L1FieldSlice &sl = p.fStations[iSta].fieldSlice;
264 // vector<L1FieldSlice> &vSls = p.fStations[iSta].fieldVirtualSlice;
265 // int itmp;
266 // in >> itmp; // station
267 // if ( itmp != iSta ) { cout << "Wrong field" << endl; exit(0); }
268 // ASSERT( itmp == iSta, itmp << " = " << iSta );
269 // in >> itmp >> p.fStations[iSta].dZVirtualStation; // n virtual stations & dz
270 // vSls.resize(itmp);
271 // in >> sl.xMin >> sl.dx >> sl.nXBins;
272 // in >> sl.yMin >> sl.dy >> sl.nYBins;
273 // const int NBins = sl.nXBins*sl.nYBins;
274 // for( unsigned int iV = 0; iV < vSls.size(); iV++ ) {
275 // L1FieldSlice &vSl = vSls[iV];
276 // vSl.xMin = sl.xMin;
277 // vSl.dx = sl.dx;
278 // vSl.nXBins = sl.nXBins;
279 // vSl.yMin = sl.yMin;
280 // vSl.dy = sl.dy;
281 // vSl.nYBins = sl.nYBins;
282 // vSl.AlocateMemory();
283 // for( int iB = 0; iB < NBins; iB++ ) {
284 // in >> vSl.bX[iB] >> vSl.bY[iB] >> vSl.bZ[iB];
285 // }
286 // }
287 //
288 // sl.AlocateMemory();
289 // for( int iB = 0; iB < NBins; iB++ ) {
290 // in >> sl.bX[iB] >> sl.bY[iB] >> sl.bZ[iB];
291 // }
292 // #endif // 0
293 // }
294 // }
295 #else // PANDA_FTS
296  p.fVtxFieldValue[0] = p.cBz();
297 #endif
298 
299  return in;
300 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t i
Definition: run_full.C:25
exit(0)
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
friend F32vec4 log(const F32vec4 &a)
Definition: P4_F32vec4.h:110
Double_t p
Definition: anasim.C:58