FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndFtsMapCreator Class Reference

#include <PndFtsMapCreator.h>

Inheritance diagram for PndFtsMapCreator:

Public Member Functions

 PndFtsMapCreator ()
 
 PndFtsMapCreator (Int_t geoType)
 
 PndFtsMapCreator (PndGeoFtsPar *par)
 
 ~PndFtsMapCreator ()
 
void SetGeneralParameters ()
 
Int_t GetTubeIDFromPath (TString path)
 
PndFtsTubeGetTubeFromTubeID (Int_t tubeid)
 
TClonesArray * FillTubeArray ()
 this function will be used in PndFtsHitProducesRealFast More...
 
Int_t GetChamberIDFromPath (TString path)
 
Int_t GetChamberIDFromName (TString name)
 
Int_t GetLayerID (Int_t chamberid, Int_t tubeid, TString path)
 
Int_t IsSkew (Int_t layerid)
 
Int_t GetTubeIDTot (Int_t chamberid, Int_t layerid, Int_t tubeid, TString path)
 

Private Member Functions

Int_t GetTubeIDFromPathGeoType1 (TString path)
 
Int_t GetTubeIDFromNameGeoType1 (TString name)
 
TString GetNameFromPathGeoType1 (TString path)
 
TString GetNameFromTubeIDGeoType1 (Int_t tubeid, Bool_t isCopy)
 
PndFtsTubeGetTubeFromTubeIDToFillGeoType1 (Int_t tubeid)
 
PndFtsTubeGetTubeFromNameToFillGeoType1 (TString tubename, Int_t tubeid, Int_t layerid)
 
TClonesArray * FillTubeArrayGeoType1 ()
 
 PndFtsMapCreator (const PndFtsMapCreator &L)
 
PndFtsMapCreatoroperator= (const PndFtsMapCreator &)
 

Private Attributes

Int_t fGeoType
 
PndGeoFtsParfFtsParameters
 
Double_t fTubeInRad
 
Double_t fTubeOutRad
 

Detailed Description

Definition at line 13 of file PndFtsMapCreator.h.

Constructor & Destructor Documentation

PndFtsMapCreator::PndFtsMapCreator ( )

Definition at line 33 of file PndFtsMapCreator.cxx.

34  : fGeoType(0), fFtsParameters(new PndGeoFtsPar()), fTubeInRad(0), fTubeOutRad(0)//, fCopy_Map()
35 {
36  //fCopy_Map.clear();
37  // Geometry loading
38  //FairRootManager* ioman = FairRootManager::Instance(); //[R.K. 01/2017] unused variable?
39  //TFile *infile = ioman->GetInFile(); //[R.K. 01/2017] unused variable?
40 }
PndGeoFtsPar * fFtsParameters
PndFtsMapCreator::PndFtsMapCreator ( Int_t  geoType)

Definition at line 46 of file PndFtsMapCreator.cxx.

References fGeoType.

47  : fGeoType(geoType), fFtsParameters(new PndGeoFtsPar()), fTubeInRad(0), fTubeOutRad(0)//, fCopy_Map()
48 {
49  //fCopy_Map.clear();
50  if(fGeoType != 1) Info("PndFtsMapCreator","Geometry %i not supported by map", fGeoType); // CHECK
51 }
PndGeoFtsPar * fFtsParameters
PndFtsMapCreator::PndFtsMapCreator ( PndGeoFtsPar par)

Definition at line 54 of file PndFtsMapCreator.cxx.

References fGeoType, PndGeoFtsPar::GetGeometryType(), and SetGeneralParameters().

55  : fGeoType(0), fFtsParameters(ftsPar), fTubeInRad(0), fTubeOutRad(0)//, fCopy_Map()
56 {
57  //fCopy_Map.clear();
58  // set general par
60  // choose geometry type
61  fGeoType = ftsPar->GetGeometryType(); // classic, optimized, average, detailed, CAD
62 
63  if(fGeoType != 1) Info("PndFtsMapCreator","Geometry %i not supported by map", fGeoType); // CHECK
64 }
PndGeoFtsPar * fFtsParameters
PndFtsMapCreator::~PndFtsMapCreator ( )

Definition at line 66 of file PndFtsMapCreator.cxx.

66 {}
PndFtsMapCreator::PndFtsMapCreator ( const PndFtsMapCreator L)
private

Member Function Documentation

TClonesArray * PndFtsMapCreator::FillTubeArray ( )

this function will be used in PndFtsHitProducesRealFast

Definition at line 465 of file PndFtsMapCreator.cxx.

References fGeoType, and FillTubeArrayGeoType1().

Referenced by PndFtsHitProducerIdeal::Exec(), PndFtsHitProducerRealFast::Init(), PndFtsHitProducerMcPointCoordinates::Init(), PndFtsCATracking::Init(), PndFtsHitProducerRealFull::Init(), PndFtsDataAccessor::Init(), PndFtsTrackerIdeal::Init(), PndRecoKalmanFit2::Init(), PndRecoKalmanFit::Init(), and PndFtsHoughTrackerTask::Init().

465  {
466 
467  std::cout<<"##### PndFtsMapCreator::FillTubeArray() ######"<<std::endl;
468  std::cout<<"fGeoType="<<fGeoType<<std::endl;
469  if(fGeoType == 1) return FillTubeArrayGeoType1();
470  return NULL;
471 }
TClonesArray * FillTubeArrayGeoType1()
TClonesArray * PndFtsMapCreator::FillTubeArrayGeoType1 ( )
private

Definition at line 596 of file PndFtsMapCreator.cxx.

References fFtsParameters, GetChamberIDFromName(), PndGeoFtsPar::GetGeoPassiveNodes(), GetLayerID(), GetTubeFromNameToFillGeoType1(), GetTubeIDFromNameGeoType1(), GetTubeIDTot(), i, and TString.

Referenced by FillTubeArray().

596  {
597 
598  //ofstream myfile("testNumber.txt");
599  TObjArray *geoPassNodes = fFtsParameters->GetGeoPassiveNodes();
600  TClonesArray *tubeArray = new TClonesArray("PndFtsTube");
601 // tubeArray->Delete();
602  //int mytest=0; //[R.K. 01/2017] unused variable?
603  //std::cout << "TA: entries: " << geoPassNodes->GetEntriesFast() << std::endl;
604  for(int i = 0; i < geoPassNodes->GetEntriesFast(); i++) {
605  FairGeoNode *pnode = (FairGeoNode*) geoPassNodes->At(i);
606  if(!pnode)
607  {
608  std::cout<<"PndFtsMapCreator::FillTubeArrayGeoType1 : tubename="<< pnode->GetName() << " not existing!!!" << std::endl;
609  continue;
610  }
611  TString tubename = pnode->GetName();
612 
613 
614  //std::cout<<"PndFtsMapCreator::FillTubeArrayGeoType1 : tubename="<<tubename<< std::endl;
615  if( (!tubename.Contains("tube")) || (!tubename.Contains("fts")) )
616  {
617  //myfile<<"PndFtsMapCreator::FillTubeArrayGeoType1 : skipping tubename="<<tubename<<endl;
618  continue;
619  }
620 
621  Int_t tempChamber = GetChamberIDFromName(tubename);
622  Int_t tubeID = GetTubeIDFromNameGeoType1(tubename);
623  Int_t tempLayer = GetLayerID(tempChamber, tubeID, tubename);
624  Int_t totTubeID = GetTubeIDTot(tempChamber, tempLayer, tubeID, tubename );
625  PndFtsTube *ftstube = GetTubeFromNameToFillGeoType1(tubename,totTubeID,tempLayer);
626  new((*tubeArray)[totTubeID]) PndFtsTube(*ftstube);
627 
628  delete (ftstube);
629  //myfile << tubename << " " << totTubeID << " "<<tempLayer<<endl;
630 
631 
632  }
633  //std:cout << "end: " << tubeArray->GetEntriesFast() << std::endl;
634  return tubeArray;
635 }
PndGeoFtsPar * fFtsParameters
Int_t GetChamberIDFromName(TString name)
Int_t i
Definition: run_full.C:25
PndFtsTube * GetTubeFromNameToFillGeoType1(TString tubename, Int_t tubeid, Int_t layerid)
Int_t GetLayerID(Int_t chamberid, Int_t tubeid, TString path)
Int_t GetTubeIDTot(Int_t chamberid, Int_t layerid, Int_t tubeid, TString path)
TObjArray * GetGeoPassiveNodes()
Definition: PndGeoFtsPar.h:31
Int_t GetTubeIDFromNameGeoType1(TString name)
Int_t PndFtsMapCreator::GetChamberIDFromName ( TString  name)

Definition at line 97 of file PndFtsMapCreator.cxx.

References name, and TString.

Referenced by FillTubeArrayGeoType1().

97  {
98  TString pathstring=name;
99  if(pathstring.Contains("fts01")){
100  //std::cout<<"chamber 1"<<std::endl;
101  return 1;
102  }
103  if(pathstring.Contains("fts02")){
104  //std::cout<<"chamber 2"<<std::endl;
105  return 2;
106  }
107  if(pathstring.Contains("fts31")||pathstring.Contains("fts32")||pathstring.Contains("fts33")||pathstring.Contains("fts34")){
108  //std::cout<<"chamber 3"<<std::endl;
109  return 3;
110  }
111  if(pathstring.Contains("fts35")||pathstring.Contains("fts36")||pathstring.Contains("fts37")||pathstring.Contains("fts38")){
112  //std::cout<<"chamber 4"<<std::endl;
113  return 4;
114  }
115  if(pathstring.Contains("fts05tube")){
116  //std::cout<<"chamber 5"<<std::endl;
117  return 5;
118  }
119  if(pathstring.Contains("fts06tube")){
120  //std::cout<<"chamber 6"<<std::endl;
121  return 6;
122  }
123  return -1;
124 }
TString name
Int_t PndFtsMapCreator::GetChamberIDFromPath ( TString  path)

Definition at line 126 of file PndFtsMapCreator.cxx.

References TString.

Referenced by PndFts::ProcessHits().

126  {
127  TString pathstring=path;
128  if(pathstring.Contains("fts01tube")){
129  //std::cout<<"chamber 1"<<std::endl;
130  return 1;
131  }
132  if(pathstring.Contains("fts02tube")){
133  //std::cout<<"chamber 2"<<std::endl;
134  return 2;
135  }
136  if(pathstring.Contains("fts31tube")||pathstring.Contains("fts32tube")||pathstring.Contains("fts33tube")||pathstring.Contains("fts34tube")){
137  //std::cout<<"chamber 3"<<std::endl;
138  return 3;
139  }
140  if(pathstring.Contains("fts35tube")||pathstring.Contains("fts36tube")||pathstring.Contains("fts37tube")||pathstring.Contains("fts38tube")){
141  //std::cout<<"chamber 4"<<std::endl;
142  return 4;
143  }
144 if(pathstring.Contains("fts05tube")){
145  //std::cout<<"chamber 5"<<std::endl;
146  return 5;
147  }
148 if(pathstring.Contains("fts06tube")){
149  //std::cout<<"chamber 6"<<std::endl;
150  return 6;
151  }
152  return -1;
153 }
Int_t PndFtsMapCreator::GetLayerID ( Int_t  chamberid,
Int_t  tubeid,
TString  path 
)

Definition at line 210 of file PndFtsMapCreator.cxx.

References i, and TString.

Referenced by FillTubeArrayGeoType1(), and PndFts::ProcessHits().

210  {
211 
212  Int_t tube=tudeid;
213  //Int_t chamber=chamberid; //[R.K. 01/2017] unused variable?
214  TString tmpstring = path;
215 
216  Int_t i=1;
217  if(chamberid==1 || chamberid==2){
218  if(chamberid==2){i=i+8;}
219  while(tube>132){
220  tube=tube-132;
221  i++;
222  }
223  }
224  if(chamberid==3){
225  i=i+16;
226  if(tmpstring.Contains("fts32")){tube=tube+352;}
227  if(tmpstring.Contains("fts33")){tube=tube+704;}
228  if(tmpstring.Contains("fts34")){tube=tube+1056;}
229  while(tube>176){
230  tube=tube-176;
231  i++;
232  }
233  }
234  if(chamberid==4){
235  i=i+24;
236  if(tmpstring.Contains("fts36")){tube=tube+416;}
237  if(tmpstring.Contains("fts37")){tube=tube+832;}
238  if(tmpstring.Contains("fts38")){tube=tube+1248;}
239  while(tube>208){
240  tube=tube-208;
241  i++;
242  }
243  }
244  if(chamberid==5){
245  i=i+32;
246  while(tube>388){
247  tube=tube-388;
248  i++;
249  }
250  }
251  if(chamberid==6){
252  i=i+40;
253  while(tube>388){
254  tube=tube-388;
255  i++;
256  }
257  }
258  return i;
259 }
Int_t i
Definition: run_full.C:25
TString PndFtsMapCreator::GetNameFromPathGeoType1 ( TString  path)
private

Definition at line 173 of file PndFtsMapCreator.cxx.

References TString.

Referenced by GetTubeIDFromPathGeoType1().

173  {
174  TString tmpstring = path;
175 
176  //std::cout<<"tmpstring original###### = "<<tmpstring<<std::endl;
177 
178 // cut /cave_1/fts01assembly_0/
179  TString cavename;
180  cavename = "/cave_1/ftsXXassembly_X/";
181  tmpstring = tmpstring(cavename.Sizeof() - 1, tmpstring.Sizeof());
182 
183  // cut /fts01gas...
184  int index = tmpstring.Index("/");
185  tmpstring = tmpstring(0, index);
186 
187  // replace _ with #
188  // if(tmpstring.Contains("_0")) {
189  // tmpstring.Chop(); // cut "0"
190  // tmpstring.Chop(); // cut "_"
191  // }
192 
193  if(tmpstring.Contains("down")){
194  tmpstring.Replace(13, 1, "#");
195  //std::cout<<"tmpstring = "<<tmpstring<<std::endl;
196  }
197  if(tmpstring.Contains("up")){
198  tmpstring.Replace(11, 1, "#");
199  //std::cout<<"tmpstring = "<<tmpstring<<std::endl;
200  }
201  if(!tmpstring.Contains("up") && !tmpstring.Contains("down")){
202  tmpstring.Replace(9, 1, "#");
203  //std::cout<<"tmpstring = "<<tmpstring<<std::endl;
204  }
205 
206 
207  return tmpstring;
208 }
TString PndFtsMapCreator::GetNameFromTubeIDGeoType1 ( Int_t  tubeid,
Bool_t  isCopy 
)
private

Definition at line 475 of file PndFtsMapCreator.cxx.

References TString.

Referenced by GetTubeFromTubeIDToFillGeoType1().

475  {
476 
477  // two possibilities:
478  // copy : XXX --> fts01tube#XXX
479  // solo : XXX --> fts01tubeXXX
480 
481  TString tmpstring;
482  TString chstring;
483 
484  tmpstring += tubeid ;
485 
486  //to be virfied
487  if(isCopy == kTRUE) {
488  tmpstring.Prepend("ftsXXtube#");
489  //tmpstring.Prepend("fts01tube#");
490  }
491  else {
492  tmpstring.Prepend("ftsXXtube");
493  }
494  return tmpstring;
495 
496 }
PndFtsTube * PndFtsMapCreator::GetTubeFromNameToFillGeoType1 ( TString  tubename,
Int_t  tubeid,
Int_t  layerid 
)
private

Definition at line 544 of file PndFtsMapCreator.cxx.

References Double_t, fFtsParameters, fTubeInRad, fTubeOutRad, PndGeoFtsPar::GetGeoPassiveNodes(), i, r, rot, x, y, and z.

Referenced by FillTubeArrayGeoType1().

544  { // tubeid layerid //[R.K.03/2017] unused variable(s)
545 
546  TObjArray *geoPassNodes = fFtsParameters->GetGeoPassiveNodes();
547  //Bool_t isCopy = kTRUE; //[R.K. 01/2017] unused variable
548  // try as if it was a copy stt01tube#XXX
549 
550  FairGeoNode *pnode = (FairGeoNode*) geoPassNodes->FindObject(tubename);
551  if(!pnode) { // try as if it was a solo stt01tubeXXX
552  //isCopy = kFALSE; //[R.K. 01/2017] unused variable
553  //tubename = GetNameFromTubeIDGeoType1(tubeid, isCopy);
554  //pnode = (FairGeoNode*) geoPassNodes->FindObject(tubename);
555  }
556 
557  if(!pnode) {
558  cout << "PndFtsMapCreator::GetTubeFromNameToFillGeoType1: tube " << tubename << " not found (nor as a copy)" << endl;
559  return NULL;
560  }
561 
562  FairGeoTransform *lab = pnode->getLabTransform();
563  FairGeoVector tra = lab->getTransVector();
564  FairGeoRotation rot = lab->getRotMatrix();
565 
566  // geometrical info
567  double x = tra.getX()/10.; // in cm
568  double y = tra.getY()/10.; // in cm
569  double z = tra.getZ()/10.; // in cm
570 
571  //std::cout<<"tubename="<<tubename<<" tubeid="<<tubeid<<" x="<<x<<" z="<<z<<std::endl;
572  //Int_t skew=IsSkew(layerid); //[R.K. 01/2017] unused variable?
573  //double angle=5*3.14159/180;
574  //x=(x+skew*(tra.getY()*sin(angle))/10.1);
575  //std::cout<<"tubename="<<tubename<<" tubeid="<<tubeid<<" skew="<<skew<<" newx="<<x<<std::endl;
576 
577  double r[3][3];
578  for(int i = 0; i < 3; i++)for(int j = 0; j < 3; j++) r[i][j] = rot.getElement(i,j);
579 
580  TGeoVolume* rootvol = pnode->getRootVolume();
581  TGeoTube *tube = (TGeoTube*) rootvol->GetShape();
582  Double_t halflength = tube->GetDz(); // in cm
583  // sets up the correspondence int (tubeID) <--> int (1 = copy/0 = solo)
584  // copy_map[key] = alloc
585  //fCopy_Map[tubeid] = isCopy;
586 
587  return new PndFtsTube((float)x,(float)y,(float)z,
588  r[0][0],r[0][1],r[0][2],
589  r[1][0],r[1][1],r[1][2],
590  r[2][0],r[2][1],r[2][2],
591  fTubeInRad, fTubeOutRad, halflength);
592 }
PndGeoFtsPar * fFtsParameters
double r
Definition: RiemannTest.C:14
Int_t i
Definition: run_full.C:25
Double_t
Double_t z
TObjArray * GetGeoPassiveNodes()
Definition: PndGeoFtsPar.h:31
Double_t x
TGeoRotation rot
Double_t y
PndFtsTube * PndFtsMapCreator::GetTubeFromTubeID ( Int_t  tubeid)

Definition at line 91 of file PndFtsMapCreator.cxx.

References fGeoType, and GetTubeFromTubeIDToFillGeoType1().

Referenced by PndFtsRecoHit::PndFtsRecoHit(), and PndFtsRecoHit2::PndFtsRecoHit2().

91  {
92  if(fGeoType == 1) return GetTubeFromTubeIDToFillGeoType1(tubeid);
93  return NULL;
94 }
PndFtsTube * GetTubeFromTubeIDToFillGeoType1(Int_t tubeid)
PndFtsTube * PndFtsMapCreator::GetTubeFromTubeIDToFillGeoType1 ( Int_t  tubeid)
private

Definition at line 499 of file PndFtsMapCreator.cxx.

References Bool_t, Double_t, fFtsParameters, fTubeInRad, fTubeOutRad, PndGeoFtsPar::GetGeoPassiveNodes(), GetNameFromTubeIDGeoType1(), i, r, rot, TString, x, y, and z.

Referenced by GetTubeFromTubeID().

499  {
500 
501  TObjArray *geoPassNodes = fFtsParameters->GetGeoPassiveNodes();
502  Bool_t isCopy = kTRUE;
503  // try as if it was a copy stt01tube#XXX
504 
505  TString tubename = GetNameFromTubeIDGeoType1(tubeid, isCopy);
506  FairGeoNode *pnode = (FairGeoNode*) geoPassNodes->FindObject(tubename);
507  if(!pnode) { // try as if it was a solo stt01tubeXXX
508  isCopy = kFALSE;
509  tubename = GetNameFromTubeIDGeoType1(tubeid, isCopy);
510  pnode = (FairGeoNode*) geoPassNodes->FindObject(tubename);
511  }
512 
513  if(!pnode) {
514  //cout << "PndFtsMapCreator::GetTubeFromTubeIDToFillGeoType1: tube " << tubename << " not f\ound (nor as a copy)" << endl;
515  return NULL;
516  }
517 
518  FairGeoTransform *lab = pnode->getLabTransform();
519  FairGeoVector tra = lab->getTransVector();
520  FairGeoRotation rot = lab->getRotMatrix();
521 
522  // geometrical info
523  double x = tra.getX()/10.; // in cm
524  double y = tra.getY()/10.; // in cm
525  double z = tra.getZ()/10.; // in cm
526 
527  double r[3][3];
528  for(int i = 0; i < 3; i++)for(int j = 0; j < 3; j++) r[i][j] = rot.getElement(i,j);
529 
530  TGeoVolume* rootvol = pnode->getRootVolume();
531  TGeoTube *tube = (TGeoTube*) rootvol->GetShape();
532  Double_t halflength = tube->GetDz(); // in cm
533  // sets up the correspondence int (tubeID) <--> int (1 = copy/0 = solo)
534  // copy_map[key] = alloc
535  // fCopy_Map[tubeid] = isCopy;
536 
537  return new PndFtsTube((float)x,(float)y,(float)z,
538  r[0][0],r[0][1],r[0][2],
539  r[1][0],r[1][1],r[1][2],
540  r[2][0],r[2][1],r[2][2],
541  fTubeInRad, fTubeOutRad, halflength);
542 }
PndGeoFtsPar * fFtsParameters
double r
Definition: RiemannTest.C:14
Int_t i
Definition: run_full.C:25
Double_t
Double_t z
TObjArray * GetGeoPassiveNodes()
Definition: PndGeoFtsPar.h:31
Double_t x
TGeoRotation rot
Double_t y
TString GetNameFromTubeIDGeoType1(Int_t tubeid, Bool_t isCopy)
Int_t PndFtsMapCreator::GetTubeIDFromNameGeoType1 ( TString  name)
private

Definition at line 156 of file PndFtsMapCreator.cxx.

References name, and TString.

Referenced by FillTubeArrayGeoType1(), and GetTubeIDFromPathGeoType1().

156  {
157 
158  TString tmpstring = name;
159 
160  if(tmpstring.Contains("#")) {
161  int start = tmpstring.Index("#") + 1;
162  tmpstring = tmpstring(start, tmpstring.Sizeof());
163  }
164  else{
165  int start = tmpstring.Index("e") + 1;
166  tmpstring = tmpstring(start, tmpstring.Sizeof());
167  }
168 
169  return tmpstring.Atoi();
170 }
TString name
Int_t PndFtsMapCreator::GetTubeIDFromPath ( TString  path)

Definition at line 74 of file PndFtsMapCreator.cxx.

References fGeoType, and GetTubeIDFromPathGeoType1().

Referenced by PndFts::ProcessHits().

74  {
75  if(fGeoType == 1) return GetTubeIDFromPathGeoType1(path);
76  return -999;
77 }
Int_t GetTubeIDFromPathGeoType1(TString path)
Int_t PndFtsMapCreator::GetTubeIDFromPathGeoType1 ( TString  path)
private

Definition at line 86 of file PndFtsMapCreator.cxx.

References GetNameFromPathGeoType1(), GetTubeIDFromNameGeoType1(), and TString.

Referenced by GetTubeIDFromPath().

86  {
87  TString tmpstring = GetNameFromPathGeoType1(path);
88  return GetTubeIDFromNameGeoType1(tmpstring);
89 }
TString GetNameFromPathGeoType1(TString path)
Int_t GetTubeIDFromNameGeoType1(TString name)
Int_t PndFtsMapCreator::GetTubeIDTot ( Int_t  chamberid,
Int_t  layerid,
Int_t  tubeid,
TString  path 
)

Definition at line 272 of file PndFtsMapCreator.cxx.

References layer, and TString.

Referenced by FillTubeArrayGeoType1(), and PndFts::ProcessHits().

273 {
274  Int_t chamber=chamberid;
275  Int_t layer=layerid;
276  Int_t tubeID=tubeid;
277  TString tmpstring=path;
278  Int_t tube=0;
279  Int_t totTubeID=0;
280  Int_t strawCh12=132, strawCh3=176, strawCh4=208, strawCh56=388;
281 
282  if(chamberid==1){tube=tubeID;}
283  if(chamberid==2){tube=tubeID+(8*strawCh12);}
284  if(chamberid==3){
285  if(layer==17||layer==18){tube=tubeID+(strawCh12*(16));}
286  if(layer==19||layer==20){tube=tubeID+(strawCh12*16)+(strawCh3*2)+(16*2);} //
287  if(layer==21||layer==22){tube=tubeID+(strawCh12*16)+(strawCh3*4)+(16*4);} //
288  if(layer==23||layer==24){tube=tubeID+(strawCh12*16)+(strawCh3*6)+(16*6);} //
289  }
290  if(chamberid==4){
291  if(layer==25||layer==26){tube=tubeID+(strawCh12*(16)+(strawCh3*8));} //
292  if(layer==27||layer==28){tube=tubeID+(strawCh12*(16)+(strawCh3*8)+(strawCh4*2))+16*2;} //
293  if(layer==29||layer==30){tube=tubeID+(strawCh12*(16)+(strawCh3*8)+(strawCh4*4))+16*4;} //
294  if(layer==31||layer==32){tube=tubeID+(strawCh12*(16)+(strawCh3*8)+(strawCh4*6))+16*6;} //
295  }
296  if(chamberid==5){tube=tubeID+(strawCh12*16)+(strawCh3*8)+(strawCh4*8);}
297  if(chamberid==6){tube=tubeID+(strawCh12*16)+(strawCh3*8)+(strawCh4*8)+(strawCh56*8);}
298 
299  //up and down short tubes have different name but the same ID number
300  //I shift the tube ID to give a different ID number to each tube
301  // tubeid chamber 1,2: between 1-143*8, hole:12 tubes
302  //tubeid chamber 3,4: between 1-ch3(4)*2 for each double layer, hole: 16 tubes
303  //tubeid chamber 5: between 1-388*8, hole: 24 tubes
304  //tubeid chamber 6: between 1-388*8, hole: 24 tubes
305 
306  //chamber 1 and chamber 2
307  if(chamber==1){
308  int shift=0;
309  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
310  if(tubeid<=61){totTubeID=tube+shift;}
311  else{
312  if(abs(tubeid-(strawCh12*(layer)))<=61){
313  totTubeID=tube+12*(layer)+shift;
314  }
315  else{
316  totTubeID=tube+12*(layer-1)+shift;
317  }
318  }
319  }
320  if(tmpstring.Contains("up")){
321  totTubeID=tube+12*(layer-1)+shift;
322  }
323  if(tmpstring.Contains("down")){
324  totTubeID=tube+12*(layer)+shift;
325  }
326  }
327  //chamber 2
328  if(chamber==2){
329  int shift=12*8;
330  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
331  if(tubeid<=61){totTubeID=tube+shift;}
332  else{
333  if(abs(tubeid-(strawCh12*(layer-8)))<=61){
334  totTubeID=tube+12*(layer-8)+shift;
335  }
336  else{
337  totTubeID=tube+12*(layer-9)+shift;
338  }
339  }
340  }
341  if(tmpstring.Contains("up")){
342  totTubeID=tube+12*(layer-9)+shift;
343  }
344  if(tmpstring.Contains("down")){
345  totTubeID=tube+12*(layer-8)+shift;
346  }
347  }
348  //chamber 3
349  if(chamber==3){
350  int shift=12*(2*8);
351  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
352  if(tubeid<=81){totTubeID=tube+shift;}
353  else{
354  if(layer%2!=0){ // odd layers
355  if(abs(tubeid-(strawCh3))<=81){
356  totTubeID=tube+shift+16;
357  }
358  else{totTubeID=tube+shift;}
359  }
360  else{
361  if(abs(tubeid-(strawCh3*2))<=81){
362  totTubeID=tube+shift+16*2;
363  }
364  else{totTubeID=tube+shift+16;}
365  }
366  }
367  }
368  if(tmpstring.Contains("down")){
369  if(layer%2!=0){totTubeID=tube+16+shift;} //odd layer
370  else{totTubeID=tube+16*2+shift;}
371  }
372  if(tmpstring.Contains("up")){
373  if(layer%2!=0){totTubeID=tube+shift;} //odd layer
374  else{totTubeID=tube+16+shift;}
375  }
376  }
377 
378  //chamber 4
379  if(chamber==4){
380  int shift=12*(2*8)+16*8;
381  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
382  if(tubeid<=97){totTubeID=tube+shift;}
383  else{
384  if(layer%2!=0){ // odd layers
385  if(abs(tubeid-(strawCh4))<=103){ //
386  totTubeID=tube+shift+16;
387  }
388  else{totTubeID=tube+shift;}
389  }
390  else{
391  if(abs(tubeid-(strawCh4*2))<=103){
392  totTubeID=tube+shift+16*2;
393  }
394  else{totTubeID=tube+shift+16;}
395  }
396  }
397  }
398  if(tmpstring.Contains("down")){
399  if(layer%2!=0){totTubeID=tube+16+shift;} //odd layer
400  else{totTubeID=tube+16*2+shift;}
401  }
402  if(tmpstring.Contains("up")){
403  if(layer%2!=0){totTubeID=tube+shift;} //odd layer
404  else{totTubeID=tube+16+shift;}
405  }
406  }
407 
408  //chamber 5
409  //12*16+16*16 are the tubes shifted in the previous chambers
410  if(chamber==5){
411  int shift=12*16+16*16;
412  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
413  if(tubeid<=177){totTubeID=tube+shift;}
414  else{
415  if(abs(tubeid-(strawCh56*(layer-32)))<=194){
416  totTubeID=tube+24*(layer-32)+shift;
417  }
418  else{
419  totTubeID=tube+24*(layer-33)+shift;
420  }
421  }
422  }
423  if(tmpstring.Contains("up")){
424  totTubeID=tube+24*(layer-33)+shift;
425  }
426  if(tmpstring.Contains("down")){
427  totTubeID=tube+24*(layer-32)+shift;
428  }
429  }
430 
431  //chamber 6
432  if(chamber==6){
433  int shift=12*16+16*16+24*8;
434  if(!tmpstring.Contains("down") && !tmpstring.Contains("up")){
435  if(tubeid<=177){totTubeID=tube+shift;}
436  else{
437  if(abs(tubeid-(strawCh56*(layer-40)))<=194){
438  totTubeID=tube+24*(layer-40)+shift;
439  }
440  else{
441  totTubeID=tube+24*(layer-41)+shift;
442  }
443  }
444  }
445  if(tmpstring.Contains("up")){
446  totTubeID=tube+24*(layer-41)+shift;
447  }
448  if(tmpstring.Contains("down")){
449  totTubeID=tube+24*(layer-40)+shift;
450  }
451  }
452 
453 
454  return totTubeID;
455 
456 }
Int_t layer
Definition: reco_muo.C:36
Int_t PndFtsMapCreator::IsSkew ( Int_t  layerid)

Definition at line 262 of file PndFtsMapCreator.cxx.

References skew.

262  {
263  Int_t skew=0;
264  //inclination of +5deg: skew=+1
265  if(layerid==3 || layerid==4 || layerid==11 || layerid==12 || layerid==19 || layerid==20 || layerid==27 || layerid==28 || layerid==35 || layerid==36 || layerid==43 || layerid==44){skew=1;}
266  //inclination of -5deg: skew=-1
267  if(layerid==5 || layerid==6 || layerid==13 || layerid==14 || layerid==21 || layerid==22 || layerid==29 || layerid==30 || layerid==37 || layerid==38 || layerid==45 || layerid==46){skew=-1;}
268 
269  return skew;
270 }
double skew
PndFtsMapCreator& PndFtsMapCreator::operator= ( const PndFtsMapCreator )
inlineprivate

Definition at line 54 of file PndFtsMapCreator.h.

54 {return *this;}
void PndFtsMapCreator::SetGeneralParameters ( )

Definition at line 68 of file PndFtsMapCreator.cxx.

References fFtsParameters, fTubeInRad, fTubeOutRad, PndGeoFtsPar::GetTubeInRad(), and PndGeoFtsPar::GetTubeOutRad().

Referenced by PndFtsMapCreator().

68  { // CHECK whether it depends on geometry or not
69  fTubeInRad = fFtsParameters->GetTubeInRad(); // tube inner radius
70  fTubeOutRad = fFtsParameters->GetTubeOutRad(); // tube outer radius
71 }
PndGeoFtsPar * fFtsParameters
Double_t GetTubeOutRad()
Definition: PndGeoFtsPar.h:39
Double_t GetTubeInRad()
Definition: PndGeoFtsPar.h:38

Member Data Documentation

PndGeoFtsPar* PndFtsMapCreator::fFtsParameters
private
Int_t PndFtsMapCreator::fGeoType
private
Double_t PndFtsMapCreator::fTubeInRad
private
Double_t PndFtsMapCreator::fTubeOutRad
private

The documentation for this class was generated from the following files: