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

#include <PndMdt.h>

Inheritance diagram for PndMdt:

Public Member Functions

 PndMdt ()
 
 PndMdt (const char *name, Bool_t active)
 
 ~PndMdt ()
 
void SetMdtMagnet (bool opt=false)
 
void SetMdtCoil (bool opt=false)
 
void SetMdtMFIron (bool opt=false)
 
void SetBarrel (TString name)
 
void SetEndcap (TString name)
 
void SetMuonFilter (TString name)
 
void SetForward (TString name)
 
void Register ()
 
void ResetParameters ()
 
void Print () const
 
void Reset ()
 
TClonesArray * GetCollection (Int_t iColl) const
 
void SetVerbosity (Bool_t verbosity)
 
void ConstructGeometry ()
 
void Initialize ()
 
void BeginEvent ()
 
Bool_t ProcessHits (FairVolume *vol)
 
Bool_t ProcessHitsFast (FairVolume *vol)
 
Bool_t ProcessHitsRoot (FairVolume *vol)
 
void EndOfEvent ()
 

Private Member Functions

Bool_t CheckIfSensitive (std::string name)
 
Int_t PdgToIndex (Int_t pdg)
 
void PndMdtMagnet ()
 
void PndMdtMuonFilter ()
 
void PndMdtMFIron ()
 
void PndMdtForward ()
 
void PndMdtCoil ()
 
void ConstructGeometryTo ()
 
void ConstructGeometryFast ()
 
void ConstructGeometryRoot ()
 
void ConstructGeometryDu ()
 

Private Attributes

TClonesArray * fMdtCollection
 
Int_t fTrkIn
 
Float_t fELoss
 
Float_t fTime
 
TLorentzVector fPos_In
 
TLorentzVector fMom_In
 
Bool_t fVerboseLevel
 
bool mdtMagnet
 
bool mdtCoil
 
bool mdtMFI
 
TString fBarrel
 
TString fEndcap
 
TString fMuonFilter
 
TString fForward
 

Detailed Description

Definition at line 20 of file PndMdt.h.

Constructor & Destructor Documentation

PndMdt::PndMdt ( )

Definition at line 33 of file PndMdt.cxx.

References fMdtCollection.

34  : FairDetector(), fMdtCollection(0), fTrkIn(-1),
35  fELoss(0), fTime(0), fPos_In(), fMom_In(),
36  fVerboseLevel(0),mdtMagnet(0), mdtCoil(0), mdtMFI(0),
37  fBarrel(""), fEndcap(""), fMuonFilter(""), fForward("")
38 {
39  fMdtCollection = new TClonesArray("PndMdtPoint");
40 }
TString fForward
Definition: PndMdt.h:89
TString fBarrel
Definition: PndMdt.h:86
TString fEndcap
Definition: PndMdt.h:87
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
bool mdtMFI
Definition: PndMdt.h:84
Bool_t fVerboseLevel
Definition: PndMdt.h:80
TString fMuonFilter
Definition: PndMdt.h:88
TLorentzVector fMom_In
Definition: PndMdt.h:77
TLorentzVector fPos_In
Definition: PndMdt.h:76
bool mdtCoil
Definition: PndMdt.h:83
Float_t fTime
Definition: PndMdt.h:75
Float_t fELoss
Definition: PndMdt.h:74
Int_t fTrkIn
Definition: PndMdt.h:73
bool mdtMagnet
Definition: PndMdt.h:82
PndMdt::PndMdt ( const char *  name,
Bool_t  active 
)

Definition at line 45 of file PndMdt.cxx.

References fMdtCollection.

46  : FairDetector(name,active), fMdtCollection(0), fTrkIn(-1),
47  fELoss(0), fTime(0), fPos_In(), fMom_In(),
48  fVerboseLevel(0),mdtMagnet(0), mdtCoil(0), mdtMFI(0),
49  fBarrel(""), fEndcap(""), fMuonFilter(""), fForward("")
50 {
51  fMdtCollection = new TClonesArray("PndMdtPoint");
52 }
TString fForward
Definition: PndMdt.h:89
TString fBarrel
Definition: PndMdt.h:86
TString fEndcap
Definition: PndMdt.h:87
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
bool mdtMFI
Definition: PndMdt.h:84
Bool_t fVerboseLevel
Definition: PndMdt.h:80
TString fMuonFilter
Definition: PndMdt.h:88
TLorentzVector fMom_In
Definition: PndMdt.h:77
TLorentzVector fPos_In
Definition: PndMdt.h:76
bool mdtCoil
Definition: PndMdt.h:83
Float_t fTime
Definition: PndMdt.h:75
TString name
Float_t fELoss
Definition: PndMdt.h:74
Int_t fTrkIn
Definition: PndMdt.h:73
bool mdtMagnet
Definition: PndMdt.h:82
PndMdt::~PndMdt ( )

Definition at line 57 of file PndMdt.cxx.

References fMdtCollection.

58 {
59  if (fMdtCollection) {
60  fMdtCollection->Delete();
61  delete fMdtCollection;
62  };
63 }
TClonesArray * fMdtCollection
Definition: PndMdt.h:72

Member Function Documentation

void PndMdt::BeginEvent ( )

Definition at line 189 of file PndMdt.cxx.

190 {
191 }
Bool_t PndMdt::CheckIfSensitive ( std::string  name)
private

Definition at line 329 of file PndMdt.cxx.

330 {
331  if ((name.find("MDT") != std::string::npos) || name.find("GasCell") != std::string::npos)
332  {
333  return kTRUE;
334  }
335 
336  return kFALSE;
337 }
TString name
void PndMdt::ConstructGeometry ( )

Definition at line 92 of file PndMdt.cxx.

References ConstructGeometryFast(), exit(), fBarrel, fEndcap, fForward, fMuonFilter, mdtCoil, mdtMagnet, mdtMFI, PndMdtCoil(), PndMdtForward(), PndMdtMagnet(), PndMdtMFIron(), PndMdtMuonFilter(), SetGeometryFileName(), sysFile, and TString.

93 {
94  TString sysFile = gSystem->Getenv("VMCWORKDIR");
95  if (fBarrel!="")
96  {
97  if (fBarrel=="fast" || fBarrel =="Fast")
98  {
100  }
101  else if (fBarrel.EndsWith(".root"))
102  {
104  std::cout<<"======= MDT:: ConstructGeometry() ========"<<endl;
105  std::cout<<"File name, "<<fBarrel<<endl;
106  std::cout<<"============================================="<<endl;
107  ConstructRootGeometry();
108  }
109  else
110  {
111  std::cout<< "PndMdt::ConstructGeometry : No good MDT Barrel definition " <<std::endl;
112  exit(0);
113  }
114  }
115 
116  if (fEndcap!="")
117  {
118  if (fEndcap.EndsWith(".root"))
119  {
121  ConstructRootGeometry();
122  }
123  else if (fBarrel!="fast" && fBarrel !="Fast")
124  {
125  std::cout<< "PndMdt::ConstructGeometry : No good MDT Endcap definition " <<std::endl;
126  exit(0);
127  }
128  }
129 
130  if (fMuonFilter!="")
131  {
132  if (fMuonFilter=="fast" || fMuonFilter=="Fast")
133  {
135  }
136  else if (fMuonFilter.EndsWith(".root"))
137  {
139  ConstructRootGeometry();
140  }
141  else
142  {
143  std::cout<< "PndMdt::ConstructGeometry : No good MDT Muon Filter definition " <<std::endl;
144  exit(0);
145  }
146  }
147 
148  if (fForward!="")
149  {
150  if (fForward=="fast" || fForward =="Fast")
151  {
152  PndMdtForward();
153  }
154  else if (fForward.EndsWith(".root"))
155  {
157  ConstructRootGeometry();
158  }
159  else
160  {
161  std::cout<< "PndMdt::ConstructGeometry : No good MDT Forward definition " <<std::endl;
162  exit(0);
163  }
164  }
165 
166  if(mdtMagnet) PndMdtMagnet();
167  if(mdtMFI) PndMdtMFIron();
168  if(mdtCoil) PndMdtCoil();
169 
170  return;
171 }
TString fForward
Definition: PndMdt.h:89
TString fBarrel
Definition: PndMdt.h:86
TString fEndcap
Definition: PndMdt.h:87
exit(0)
bool mdtMFI
Definition: PndMdt.h:84
TString fMuonFilter
Definition: PndMdt.h:88
void PndMdtMFIron()
void PndMdtMagnet()
TString sysFile
Cave SetGeometryFileName("pndcave.geo")
bool mdtCoil
Definition: PndMdt.h:83
void PndMdtForward()
void ConstructGeometryFast()
void PndMdtCoil()
Definition: PndMdtCoil.cxx:33
bool mdtMagnet
Definition: PndMdt.h:82
void PndMdtMuonFilter()
void PndMdt::ConstructGeometryDu ( )
private
void PndMdt::ConstructGeometryFast ( )
private

Definition at line 34 of file PndMdtGeoConstructorFast.cxx.

References CAMath::Cos(), Double_t, dz, geobuild, geoFace, geoLoad, gGeoManager, i, Media, PndMdt_Barrel_Displacement, PndMdt_Barrel_Length, PndMdt_Endcap_Height, PndMdt_H01_LengthX, PndMdt_H01_LengthZ, PndMdt_H02_H, PndMdt_H02_V, PndMdt_H03_H, PndMdt_H03_V, PndMdt_H04_H, PndMdt_H04_V, PndMdt_H05_H, PndMdt_H05_V, PndMdt_H06_H, PndMdt_H06_V, PndMdt_SV100, PndMdt_SV101, PndMdt_SV102, PndMdt_SV103, PndMdt_SV104, PndMdt_SV105, PndMdt_SV106, PndMdt_SV107, PndMdt_SV108, PndMdt_SV109, PndMdt_SV110, PndMdt_SV111, PndMdt_SV112, PndMdt_SV200, PndMdt_SV201, PndMdt_SV202, PndMdt_SV203, PndMdt_SV204, PndMdt_SVThickness, CAMath::Sin(), CAMath::Tan(), and TString.

Referenced by ConstructGeometry().

35 {
36  TString vname = "cave";
37  vname = vname.Strip();
38  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
39 
40  //General definitions
41  TGeoVolume* mdt = new TGeoVolumeAssembly("Mdt");
42  new TGeoVolumeAssembly("MdtMag"); //TGeoVolume* mdtMag = // FIXME [R.K. 03/2017] unused variable?
43  TGeoVolume* mdtBarrel = new TGeoVolumeAssembly("MdtBarrel");
44  TGeoVolume* mdtBL00 = new TGeoVolumeAssembly("MdtBarrelLayer00");
45  TGeoVolume* mdtBL01 = new TGeoVolumeAssembly("MdtBarrelLayer01");
46  TGeoVolume* mdtBL02 = new TGeoVolumeAssembly("MdtBarrelLayer02");
47  TGeoVolume* mdtBL03 = new TGeoVolumeAssembly("MdtBarrelLayer03");
48  TGeoVolume* mdtBL04 = new TGeoVolumeAssembly("MdtBarrelLayer04");
49  TGeoVolume* mdtBL05 = new TGeoVolumeAssembly("MdtBarrelLayer05");
50  TGeoVolume* mdtBL06 = new TGeoVolumeAssembly("MdtBarrelLayer06");
51  TGeoVolume* mdtBL07 = new TGeoVolumeAssembly("MdtBarrelLayer07");
52  TGeoVolume* mdtBL08 = new TGeoVolumeAssembly("MdtBarrelLayer08");
53  TGeoVolume* mdtBL09 = new TGeoVolumeAssembly("MdtBarrelLayer09");
54  TGeoVolume* mdtBL10 = new TGeoVolumeAssembly("MdtBarrelLayer10");
55  TGeoVolume* mdtBL11 = new TGeoVolumeAssembly("MdtBarrelLayer11");
56  TGeoVolume* mdtBL12 = new TGeoVolumeAssembly("MdtBarrelLayer12");
57  TGeoVolume* mdtEndcap = new TGeoVolumeAssembly("MdtEndcap");
58  TGeoVolume* mdtEL00 = new TGeoVolumeAssembly("MdtEndcapLayer00");
59  TGeoVolume* mdtEL01 = new TGeoVolumeAssembly("MdtEndcapLayer01");
60  TGeoVolume* mdtEL02 = new TGeoVolumeAssembly("MdtEndcapLayer02");
61  TGeoVolume* mdtEL03 = new TGeoVolumeAssembly("MdtEndcapLayer03");
62  TGeoVolume* mdtEL04 = new TGeoVolumeAssembly("MdtEndcapLayer04");
63  new TGeoVolumeAssembly("MdtEndcapLayer05"); //TGeoVolume* mdtEL05 = //FIXME [R.K. 03/2017] unused variable?
64 
65  //Additional definitions
66  Text_t buffer[30];
67  Text_t longbuffer[250];
68  Double_t mpx, mpy, mpz;
69  Double_t mx0, my0, mz0;
70  Double_t my;
71  int k;
72  Double_t dx1, dx2, dy1, dy2, dz;
73  TGeoRotation tRot, tRotSlice;
74  //Double_t angle; //[R.K. 01/2017] unused variable?
75 
76  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
77  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
78  FairGeoMedia *Media = geoFace->getMedia();
79  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
80  FairGeoMedium *medmdtArCO2 = Media->getMedium("MDTMixture");
81  geobuild->createMedium(medmdtArCO2);// Int_t kMedmdtArCO2= //[R.K.03/2017] unused variable
82 
83  //creating the holes
84  new TGeoBBox("hbox1",((Double_t)PndMdt_H01_LengthX)/10.0,((Double_t)PndMdt_H01_LengthZ)/10.0,((Double_t)PndMdt_SVThickness+1.)/10.0,0);
85  new TGeoBBox("hbox2",((Double_t)PndMdt_H02_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H02_V)/10.0,0);
86  new TGeoBBox("hbox3",((Double_t)PndMdt_H03_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H03_V)/10.0,0);
87  new TGeoBBox("hbox4",((Double_t)PndMdt_H04_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H04_V)/10.0,0);
88  new TGeoBBox("hbox5",((Double_t)PndMdt_H05_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H05_V)/10.0,0);
89  new TGeoBBox("hbox6",((Double_t)PndMdt_H06_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H06_V)/10.0,0);
90 
91  //MdtBarrel
92  tRot.RotateX(90.0);
93  mpy = ((Double_t)PndMdt_Barrel_Length)/2.0; // subtract dead space in yoke
94  mpz = (Double_t)PndMdt_SVThickness;
96  for(int i=0; i<13; i++)
97  {
98  switch(i)
99  {
100  case 0:
101  my0 = (Double_t)PndMdt_SV100;
102  break;
103  case 1:
104  my0 = (Double_t)PndMdt_SV101;
105  break;
106  case 2:
107  my0 = (Double_t)PndMdt_SV102;
108  break;
109  case 3:
110  my0 = (Double_t)PndMdt_SV103;
111  break;
112  case 4:
113  my0 = (Double_t)PndMdt_SV104;
114  break;
115  case 5:
116  my0 = (Double_t)PndMdt_SV105;
117  break;
118  case 6:
119  my0 = (Double_t)PndMdt_SV106;
120  break;
121  case 7:
122  my0 = (Double_t)PndMdt_SV107;
123  break;
124  case 8:
125  my0 = (Double_t)PndMdt_SV108;
126  break;
127  case 9:
128  my0 = (Double_t)PndMdt_SV109;
129  break;
130  case 10:
131  my0 = (Double_t)PndMdt_SV110;
132  break;
133  case 11:
134  my0 = (Double_t)PndMdt_SV111;
135  break;
136  case 12:
137  my0 = (Double_t)PndMdt_SV112;
138  break;
139  };
140  my = my0;
141  mpx = (my - mpz)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
142  if (!mdtMagnet) mpx = mpx - 55.; // STE: If realistic magnet, planes are a bit smaller because of the yoke structure (edges)
143  sprintf(buffer,"box%i",i);
144  TGeoBBox* box = new TGeoBBox(buffer,mpx/10.0,mpy/10.0,mpz/10.0,0);
145  TGeoTranslation* tgt = new TGeoTranslation(0.0,mz0/10.0,0.0);
146  tgt->SetName("tgt");
147  tgt->RegisterYourself();
148  sprintf(buffer,"box%i:tgt-hbox1",i);
149  TGeoCompositeShape* tgcs = new TGeoCompositeShape("tgcs",buffer);
150  for(int j=0; j<8; j++)
151  {
152  if(j==0 || j==4)
153  {
154  k=j+2;
155  mx0 = my*TMath::Cos(((Double_t)k)*TMath::ACos(-1.0)/4.0);
156  my0 = my*TMath::Sin(((Double_t)k)*TMath::ACos(-1.0)/4.0);
157  //sprintf(buffer,"muon%i",8*i+j);
158  sprintf(buffer,"MDT%is%il%ib%iw%i", 1, j, i, 0, 0);
159  TGeoVolume* volume = new TGeoVolume(buffer,tgcs,gGeoManager->GetMedium("MDTMixture"));
160  AddSensitiveVolume(volume);
161  volume->SetLineColor(1);
162  // mdtBarrel->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
163  switch(i)
164  {
165  case 0:
166  mdtBL00->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
167  break;
168  case 1:
169  mdtBL01->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
170  break;
171  case 2:
172  mdtBL02->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
173  break;
174  case 3:
175  mdtBL03->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
176  break;
177  case 4:
178  mdtBL04->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
179  break;
180  case 5:
181  mdtBL05->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
182  break;
183  case 6:
184  mdtBL06->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
185  break;
186  case 7:
187  mdtBL07->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
188  break;
189  case 8:
190  mdtBL08->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
191  break;
192  case 9:
193  mdtBL09->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
194  break;
195  case 10:
196  mdtBL10->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
197  break;
198  case 11:
199  mdtBL11->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
200  break;
201  case 12:
202  mdtBL12->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
203  break;
204  };
205  }
206  else
207  {
208  if(j==2 || j==6) k=j-2;
209  else k=j;
210  mx0 = my*TMath::Cos(((Double_t)k)*TMath::ACos(-1.0)/4.0);
211  my0 = my*TMath::Sin(((Double_t)k)*TMath::ACos(-1.0)/4.0);
212  //sprintf(buffer,"muon%i",8*i+j);
213  sprintf(buffer,"MDT%is%il%ib%iw%i", 1, j, i, 0, 0);
214  TGeoVolume* volume = new TGeoVolume(buffer,box,gGeoManager->GetMedium("MDTMixture"));
215  AddSensitiveVolume(volume);
216  volume->SetLineColor(1);
217  // mdtBarrel->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
218  switch(i)
219  {
220  case 0:
221  mdtBL00->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
222  break;
223  case 1:
224  mdtBL01->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
225  break;
226  case 2:
227  mdtBL02->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
228  break;
229  case 3:
230  mdtBL03->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
231  break;
232  case 4:
233  mdtBL04->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
234  break;
235  case 5:
236  mdtBL05->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
237  break;
238  case 6:
239  mdtBL06->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
240  break;
241  case 7:
242  mdtBL07->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
243  break;
244  case 8:
245  mdtBL08->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
246  break;
247  case 9:
248  mdtBL09->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
249  break;
250  case 10:
251  mdtBL10->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
252  break;
253  case 11:
254  mdtBL11->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
255  break;
256  case 12:
257  mdtBL12->AddNode(volume,8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
258  break;
259  };
260  };
261  tRot.RotateZ(-45.0);
262  };
263  };
264 
265  mdtBarrel->AddNode(mdtBL00,1);
266  mdtBarrel->AddNode(mdtBL01,1);
267  mdtBarrel->AddNode(mdtBL02,1);
268  mdtBarrel->AddNode(mdtBL03,1);
269  mdtBarrel->AddNode(mdtBL04,1);
270  mdtBarrel->AddNode(mdtBL05,1);
271  mdtBarrel->AddNode(mdtBL06,1);
272  mdtBarrel->AddNode(mdtBL07,1);
273  mdtBarrel->AddNode(mdtBL08,1);
274  mdtBarrel->AddNode(mdtBL09,1);
275  mdtBarrel->AddNode(mdtBL10,1);
276  mdtBarrel->AddNode(mdtBL11,1);
277  mdtBarrel->AddNode(mdtBL12,1);
278  mdt->AddNode(mdtBarrel,1);
279 
280  //MdtEndcap
281  if (fEndcap=="Fast" || fEndcap=="fast")
282  {
283  TGeoRotation tgrl;
284  tgrl.RotateY(0.0);
285  TGeoRotation* tgr0 = new TGeoRotation(tgrl);
286  tgr0->SetName("tgr0");
287  tgr0->RegisterYourself();
288  tgrl.RotateY(45.0);
289  TGeoRotation* tgr1 = new TGeoRotation(tgrl);
290  tgr1->SetName("tgr1");
291  tgr1->RegisterYourself();
292  tgrl.RotateY(45.0);
293  TGeoRotation* tgr2 = new TGeoRotation(tgrl);
294  tgr2->SetName("tgr2");
295  tgr2->RegisterYourself();
296  tgrl.RotateY(45.0);
297  TGeoRotation* tgr3 = new TGeoRotation(tgrl);
298  tgr3->SetName("tgr3");
299  tgr3->RegisterYourself();
300  tgrl.RotateY(45.0);
301  TGeoRotation* tgr4 = new TGeoRotation(tgrl);
302  tgr4->SetName("tgr4");
303  tgr4->RegisterYourself();
304  tgrl.RotateY(45.0);
305  TGeoRotation* tgr5 = new TGeoRotation(tgrl);
306  tgr5->SetName("tgr5");
307  tgr5->RegisterYourself();
308  tgrl.RotateY(45.0);
309  TGeoRotation* tgr6 = new TGeoRotation(tgrl);
310  tgr6->SetName("tgr6");
311  tgr6->RegisterYourself();
312  tgrl.RotateY(45.0);
313  TGeoRotation* tgr7 = new TGeoRotation(tgrl);
314  tgr7->SetName("tgr7");
315  tgr7->RegisterYourself();
316 
317  dx2 = 0.0;
318  dy1 = (Double_t)PndMdt_SVThickness;
319  dy2 = (Double_t)PndMdt_SVThickness;
320 
321  for(int i=0; i<5; i++)
322  {
323  switch(i)
324  {
325  case 0:
326  mz0 = (Double_t)PndMdt_SV200;
327  break;
328  case 1:
329  mz0 = (Double_t)PndMdt_SV201;
330  break;
331  case 2:
332  mz0 = (Double_t)PndMdt_SV202;
333  break;
334  case 3:
335  mz0 = (Double_t)PndMdt_SV203;
336  break;
337  case 4:
338  mz0 = (Double_t)PndMdt_SV204;
339  break;
340  };
341  if(i==0)
342  {
343  dx1 = ((Double_t)(PndMdt_SV100-15))*(TMath::Tan(TMath::ACos(-1.0)/8.0));
344  my = ((Double_t)(PndMdt_SV100-15))/2.0;
345  dz = ((Double_t)(PndMdt_SV100-15))/2.0;
346  TGeoTranslation* tgt1 = new TGeoTranslation(0.0,0.0,my/(-10.0));
347  tgt1->SetName("tgt1");
348  tgt1->RegisterYourself();
349  new TGeoTrd2("trd1",dx1/10.0,dx2/10.0,dy1/10.0,dy2/10.0,dz/10.0);
350  } else {
351  dx1 = ((Double_t)PndMdt_Endcap_Height)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
352  my = ((Double_t)PndMdt_Endcap_Height)/2.0;
353  dz = ((Double_t)PndMdt_Endcap_Height)/2.0;
354  TGeoTranslation* tgt2 = new TGeoTranslation(0.0,0.0,my/(-10.0));
355  tgt2->SetName("tgt2");
356  tgt2->RegisterYourself();
357  new TGeoTrd2("trd2",dx1/10.0,dx2/10.0,dy1/10.0,dy2/10.0,dz/10.0);
358  };
359  for(int j=0; j<8; j++)
360  {
361  sprintf(buffer,"tgcs%i",(8*i)+j);
362  if(i==0) sprintf(longbuffer,"trd1:tgt1-hbox%i:tgr%i",i+2,j);
363  else sprintf(longbuffer,"trd2:tgt2-hbox%i:tgr%i",i+2,j);
364  TGeoCompositeShape* tgcs = new TGeoCompositeShape(buffer,longbuffer);
365  //sprintf(buffer,"muon%i",200+8*i+j);
366  sprintf(buffer,"MDT%is%il%ib%iw%i", 2, j, i, 0, 0);
367  TGeoVolume* volume = new TGeoVolume(buffer,tgcs,gGeoManager->GetMedium("MDTMixture"));
368  AddSensitiveVolume(volume);
369  volume->SetLineColor(1);
370  // mdtEndcap->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
371  switch(i)
372  {
373  case 0:
374  mdtEL00->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
375  break;
376  case 1:
377  mdtEL01->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
378  break;
379  case 2:
380  mdtEL02->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
381  break;
382  case 3:
383  mdtEL03->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
384  break;
385  case 4:
386  mdtEL04->AddNode(volume,200+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
387  break;
388  };
389  tRot.RotateZ(-45.0);
390  };
391  };
392 
393  mdtEndcap->AddNode(mdtEL00,1);
394  mdtEndcap->AddNode(mdtEL01,1);
395  mdtEndcap->AddNode(mdtEL02,1);
396  mdtEndcap->AddNode(mdtEL03,1);
397  mdtEndcap->AddNode(mdtEL04,1);
398  mdt->AddNode(mdtEndcap,1);
399  }
400 
401  vcave->AddNode(mdt,1);
402 
403 // if(mdtMF) PndMdtMuonFilter();
404 
405  return;
406 }
#define PndMdt_H05_H
#define PndMdt_SV201
TString fEndcap
Definition: PndMdt.h:87
#define PndMdt_SV100
#define PndMdt_SVThickness
Definition: PndMdtForward.h:23
#define PndMdt_SV111
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
#define PndMdt_H02_H
#define PndMdt_Barrel_Displacement
static T Sin(const T &x)
Definition: PndCAMath.h:42
#define PndMdt_SV108
float Tan(float x)
Definition: PndCAMath.h:165
#define PndMdt_SV106
#define PndMdt_H03_H
#define PndMdt_SV107
#define PndMdt_H02_V
TGeoManager * gGeoManager
static T Cos(const T &x)
Definition: PndCAMath.h:43
#define PndMdt_H06_V
#define PndMdt_Barrel_Length
#define PndMdt_H05_V
FairGeoBuilder * geobuild
Double_t
#define PndMdt_SV112
#define PndMdt_H01_LengthZ
#define PndMdt_SV101
#define PndMdt_H01_LengthX
#define PndMdt_SV204
#define PndMdt_SV202
#define PndMdt_H04_H
#define PndMdt_Endcap_Height
#define PndMdt_SV104
#define PndMdt_SV110
#define PndMdt_SV203
#define PndMdt_SV109
#define PndMdt_SV103
#define PndMdt_SV105
FairGeoInterface * geoFace
#define PndMdt_SV200
#define PndMdt_H06_H
bool mdtMagnet
Definition: PndMdt.h:82
#define PndMdt_SV102
#define PndMdt_H04_V
#define PndMdt_H03_V
void PndMdt::ConstructGeometryRoot ( )
private
void PndMdt::ConstructGeometryTo ( )
private
void PndMdt::EndOfEvent ( )

Definition at line 364 of file PndMdt.cxx.

References fVerboseLevel, Print(), and Reset().

365 {
366  if (fVerboseLevel) Print();
367  Reset();
368 }
Bool_t fVerboseLevel
Definition: PndMdt.h:80
void Reset()
Definition: PndMdt.cxx:77
void Print() const
Definition: PndMdt.cxx:68
TClonesArray * PndMdt::GetCollection ( Int_t  iColl) const

Accessors

Definition at line 341 of file PndMdt.cxx.

References fMdtCollection.

342 {
343 
344  if(iColl==0) {
345  return fMdtCollection;
346  }else{
347  return NULL;
348  }
349 
350 }
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
void PndMdt::Initialize ( )

Definition at line 176 of file PndMdt.cxx.

References Initialize().

177 {
179  //FairRun* sim = FairRun::Instance(); //[R.K. 01/2017] unused variable?
180  //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); //[R.K. 01/2017] unused variable?
181  //PndGeoMdtPar* par=(PndGeoMdtPar*)(rtdb->getContainer("PndGeoMdtPar"));
182 
183  //TObjArray *fSensNodes = par->GetSensitiveNodes();
184 }
Mvd Initialize()
Int_t PndMdt::PdgToIndex ( Int_t  pdg)
private

Definition at line 351 of file PndMdt.cxx.

352 {
353  Int_t abspdg = abs(pdg);
354  if(abspdg == 11) return 0;
355  else if(abspdg == 211) return 2;
356  else if(abspdg == 13) return 1;
357  else if(abspdg == 2212) return 4;
358  else if(abspdg == 321) return 3;
359  else return 1;
360 }
void PndMdt::PndMdtCoil ( )
private

Definition at line 33 of file PndMdtCoil.cxx.

References geobuild, geoFace, geoLoad, gGeoManager, Media, and TString.

Referenced by ConstructGeometry().

34 {
35  TString vname = "cave";
36  vname = vname.Strip();
37  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
38 
39  //General definitions
40 // TGeoVolume* mag = new TGeoVolumeAssembly("PndMdtMagnet");
41  TGeoVolume* mdtcoi = new TGeoVolumeAssembly("MdtCoil");
42 
43  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
44  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
45  FairGeoMedia *Media = geoFace->getMedia();
46  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
47  FairGeoMedium *medmdtiron = Media->getMedium("iron");
48  geobuild->createMedium(medmdtiron);
49 
50 
51 
52 // MdtMagnetCoil ///////////
53 
54 
58 
60  TGeoTube* s_nbti = new TGeoTube("s_nbti",(1075.-1.3)/10,(1075.2+1.3)/10, (900-130)/20);
61  TGeoVolume* s_nbti_vol = new TGeoVolume("s_nbti_vol",s_nbti,gGeoManager->GetMedium("iron"));
62  TGeoTube* s_nbti1 = new TGeoTube("s_nbti1",(1075.-1.3)/10,(1075.2+1.3)/10, (470-130)/20);
63  TGeoVolume* s_nbti_vol1 = new TGeoVolume("s_nbti_vol1",s_nbti1,gGeoManager->GetMedium("iron"));
64  TGeoTube* s_nbti2 = new TGeoTube("s_nbti2",(1075.-1.3)/10,(1075.2+1.3)/10, (1500-730)/20);
65  TGeoVolume* s_nbti_vol2 = new TGeoVolume("s_nbti_vol2",s_nbti2,gGeoManager->GetMedium("iron"));
66 
67  TGeoTube* s_aldown = new TGeoTube("s_aldown",(1057.-15)/10,(1057.+15.)/10, (900-130)/20);
68 // TGeoVolume* s_aldown_vol = new TGeoVolume("s_aldown_vol",s_aldown,gGeoManager->GetMedium("aluminium"));
69  TGeoVolume* s_aldown_vol = new TGeoVolume("s_aldown_vol",s_aldown,gGeoManager->GetMedium("iron"));
70  TGeoTube* s_aldown1 = new TGeoTube("s_aldown1",(1057.-15)/10,(1057.+15.)/10, (470-130)/20);
71 // TGeoVolume* s_aldown_vol1 = new TGeoVolume("s_aldown_vol1",s_aldown1,gGeoManager->GetMedium("aluminium"));
72  TGeoVolume* s_aldown_vol1 = new TGeoVolume("s_aldown_vol1",s_aldown1,gGeoManager->GetMedium("iron"));
73  TGeoTube* s_aldown2 = new TGeoTube("s_aldown2",(1057.-15)/10,(1057.+15.)/10, (1500-730)/20);
74 // TGeoVolume* s_aldown_vol2 = new TGeoVolume("s_aldown_vol2",s_aldown2,gGeoManager->GetMedium("aluminium"));
75  TGeoVolume* s_aldown_vol2 = new TGeoVolume("s_aldown_vol2",s_aldown2,gGeoManager->GetMedium("iron"));
76 
77  TGeoTube* s_alup = new TGeoTube("s_alup",(1097.-15.)/10,(1097.+15.)/10, (900-130)/20);
78 // TGeoVolume* s_alup_vol = new TGeoVolume("s_alup_vol",s_alup,gGeoManager->GetMedium("aluminium"));
79  TGeoVolume* s_alup_vol = new TGeoVolume("s_alup_vol",s_alup,gGeoManager->GetMedium("iron"));
80  TGeoTube* s_alup1 = new TGeoTube("s_alup1",(1097.-15.)/10,(1097.+15.)/10, (470-130)/20);
81 // TGeoVolume* s_alup_vol1 = new TGeoVolume("s_alup_vol1",s_alup1,gGeoManager->GetMedium("aluminium"));
82  TGeoVolume* s_alup_vol1 = new TGeoVolume("s_alup_vol1",s_alup1,gGeoManager->GetMedium("iron"));
83  TGeoTube* s_alup2 = new TGeoTube("s_alup2",(1097.-15.)/10,(1097.+15.)/10, (1500-730)/20);
84 // TGeoVolume* s_alup_vol2 = new TGeoVolume("s_alup_vol2",s_alup2,gGeoManager->GetMedium("aluminium"));
85  TGeoVolume* s_alup_vol2 = new TGeoVolume("s_alup_vol2",s_alup2,gGeoManager->GetMedium("iron"));
86 
87  s_nbti_vol->SetLineColor(4);
88  s_nbti_vol1->SetLineColor(4);
89  s_nbti_vol2->SetLineColor(4);
90  s_alup_vol->SetLineColor(2);
91  s_alup_vol1->SetLineColor(2);
92  s_alup_vol2->SetLineColor(2);
93  s_aldown_vol->SetLineColor(2);
94  s_aldown_vol1->SetLineColor(2);
95  s_aldown_vol2->SetLineColor(2);
96 
97  mdtcoi->AddNode(s_nbti_vol,0, new TGeoTranslation(0.0,0.0,(-77-22.5)/2));
98  mdtcoi->AddNode(s_nbti_vol1,1, new TGeoTranslation(0.0,0.0,(47+17/2)/2));
99  mdtcoi->AddNode(s_nbti_vol2,2, new TGeoTranslation(0.0,0.0,(150+45+77/2)/2));
100 
101  mdtcoi->AddNode(s_aldown_vol,3, new TGeoTranslation(0.0,0.0,(-77-22.5)/2));
102  mdtcoi->AddNode(s_aldown_vol1,4, new TGeoTranslation(0.0,0.0,(47+17/2)/2));
103  mdtcoi->AddNode(s_aldown_vol2,5, new TGeoTranslation(0.0,0.0,(150+45+77/2)/2));
104 
105  mdtcoi->AddNode(s_alup_vol,6, new TGeoTranslation(0.0,0.0,(-77-22.5)/2));
106  mdtcoi->AddNode(s_alup_vol1,7, new TGeoTranslation(0.0,0.0,(47+17/2)/2));
107  mdtcoi->AddNode(s_alup_vol2,8, new TGeoTranslation(0.0,0.0,(150+45+77/2)/2));
108 
110 
112  TGeoTube* cr_fedown = new TGeoTube("cr_fedown",(960-2.)/10,(960+2.)/10, (1100+1790)/20);
113  TGeoVolume* cr_fedown_vol = new TGeoVolume("cr_fedown_vol",cr_fedown,gGeoManager->GetMedium("iron"));
114 
115 
117  TGeoTube* cr_aldown = new TGeoTube("cr_aldown",(990-20.)/10,(990+20.)/10, (1100+1790)/20);
118 // TGeoVolume* cr_aldown_vol = new TGeoVolume("cr_aldown_vol",cr_aldown,gGeoManager->GetMedium("aluminium"));
119  TGeoVolume* cr_aldown_vol = new TGeoVolume("cr_aldown_vol",cr_aldown,gGeoManager->GetMedium("iron"));
120 
121  cr_fedown_vol->SetLineColor(5);
122  cr_aldown_vol->SetLineColor(4);
123 
124  mdtcoi->AddNode(cr_fedown_vol,9, new TGeoTranslation(0.0,0.0,69./2));
125  mdtcoi->AddNode(cr_aldown_vol,10, new TGeoTranslation(0.0,0.0,69./2));
126 
127 
129  TGeoTube* cr_alup = new TGeoTube("cr_alup",(1180-40.)/10,(1180+40.)/10, (1100+1790)/20);
130 // TGeoVolume* cr_alup_vol = new TGeoVolume("cr_alup_vol",cr_alup,gGeoManager->GetMedium("aluminium"));
131  TGeoVolume* cr_alup_vol = new TGeoVolume("cr_alup_vol",cr_alup,gGeoManager->GetMedium("iron"));
132 
134  TGeoTube* cr_feup = new TGeoTube("cr_feup",(1240-6.2)/10,(1240+6.2)/10, (1100+1790)/20);
135  TGeoVolume* cr_feup_vol = new TGeoVolume("cr_feup_vol",cr_feup,gGeoManager->GetMedium("iron"));
136 
137  cr_alup_vol->SetLineColor(5);
138  cr_alup_vol->SetLineColor(4);
139 
140  mdtcoi->AddNode(cr_alup_vol,11, new TGeoTranslation(0.0,0.0,69./2));
141  mdtcoi->AddNode(cr_feup_vol,12, new TGeoTranslation(0.0,0.0,69./2));
143 // mag->AddNode(magCoil,1);
144 // vcave->AddNode(mag,1);
145 
146  vcave->AddNode(mdtcoi,1);
147 
148  return;
149 }
FairGeoLoader * geoLoad
FairGeoMedia * Media
TGeoManager * gGeoManager
FairGeoBuilder * geobuild
FairGeoInterface * geoFace
void PndMdt::PndMdtForward ( )
private

Definition at line 32 of file PndMdtForward.cxx.

References Double_t, geobuild, geoFace, geoLoad, gGeoManager, Media, PndMdt_FWD_DX, PndMdt_FWD_DY, PndMdt_FWD_Fe_DZ, PndMdt_FWD_Hole_DX, PndMdt_FWD_Hole_DY, PndMdt_SVThickness, and TString.

Referenced by ConstructGeometry().

33 {
34  TString vname = "Mdt";
35  vname = vname.Strip();
36  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
37 
38  //General definitions
39  TGeoVolume* mdtfwd = new TGeoVolumeAssembly("MdtForward");
40 
41  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
42  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
43  FairGeoMedia *Media = geoFace->getMedia();
44  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
45  FairGeoMedium *medmdtArCO2 = Media->getMedium("MDTMixture");
46  geobuild->createMedium(medmdtArCO2);
47  FairGeoMedium *medmdtFe = Media->getMedium("iron");
48  geobuild->createMedium(medmdtFe);
49  FairGeoMedium *medmdtVac = Media->getMedium("vacuum");
50  geobuild->createMedium(medmdtVac);
51 
52  //char fe[12], hl[12], ffe[12], gas[12], hgas[12], ggas[12]; //[R.K. 01/2017] unused variable?
53  Char_t buffer[255];
54  TGeoTranslation *frotfe[16];
55  TGeoTranslation *frotgas[17];
56  TGeoVolume *FeForward[16];
57  TGeoVolume *GasForward[17];
58 
62  Double_t fwd_holedx = (Double_t)PndMdt_FWD_Hole_DX;
63  Double_t fwd_holedy = (Double_t)PndMdt_FWD_Hole_DY;
65 
66  gGeoManager->MakeBox("fe", gGeoManager->GetMedium("iron"), fwd_dx/20., fwd_dy/20., fwd_fedz/20.);
67  gGeoManager->MakeBox("hl", gGeoManager->GetMedium("vacuum"), fwd_holedx/20., fwd_holedy/20., fwd_fedz/20.+1.);
68 
69  gGeoManager->MakeBox("gas", gGeoManager->GetMedium("MDTMixture"), fwd_dx/20., fwd_dy/20., fwd_thick/20.);
70  gGeoManager->MakeBox("hgas", gGeoManager->GetMedium("vacuum"), fwd_holedx/20., fwd_holedy/20., fwd_thick/20.+1.);
71 
72  TGeoTranslation *vv = new TGeoTranslation((15+1.8), 0, 0);
73  vv->SetName("vv");
74  vv->RegisterYourself();
75  TGeoCompositeShape *csfe = new TGeoCompositeShape("ffe", "(fe - (hl:vv))");
76  TGeoCompositeShape *csgas = new TGeoCompositeShape("ggas", "(gas - (hgas:vv))");
77 
78  // Fe layers
79  int yt=0, kk=0;
80  for (int nFeLayer=0; nFeLayer<16; nFeLayer++)
81  {
82  yt=(nFeLayer%4);
83  if(yt==0) kk++;
84  frotfe[nFeLayer] = new TGeoTranslation(kk*1.45, 0, 873+9*nFeLayer);
85  FeForward[nFeLayer] = new TGeoVolume(Form("FeForwardLayer%d",nFeLayer), csfe, gGeoManager->GetMedium("iron"));
86  frotfe[nFeLayer]->SetName(Form("frotfe%d",nFeLayer));
87  frotfe[nFeLayer]->RegisterYourself();
88 
89  mdtfwd->AddNode(FeForward[nFeLayer], nFeLayer, frotfe[nFeLayer]);
90  }
91  // end of Fe layers
92 
93  // // MDT gas layers
94  yt=0; kk=0;
95  for (int nLayer=0; nLayer<17; nLayer++)
96  {
97  sprintf(buffer,"MDT%is%il%ib%iw%i", 4, 0, nLayer, 0, 0);
98  yt=(nLayer%4);
99  if(yt==0) kk++;
100  if(nLayer!=0) {
101  frotgas[nLayer] = new TGeoTranslation(kk*1.45, 0, 876.1+ fwd_thick/20. +9*(nLayer-1));
102  GasForward[nLayer] = new TGeoVolume(buffer, csgas, gGeoManager->GetMedium("MDTMixture"));
103  }
104  else
105  {
106  frotgas[nLayer] = new TGeoTranslation(kk*1.45, 0, 869.9 - fwd_thick/20.);
107  GasForward[nLayer] = new TGeoVolume(buffer, csgas, gGeoManager->GetMedium("MDTMixture"));
108  }
109  frotgas[nLayer]->SetName(Form("frotgas%d",nLayer));
110  frotgas[nLayer]->RegisterYourself();
111  AddSensitiveVolume(GasForward[nLayer]);
112  mdtfwd->AddNode(GasForward[nLayer], nLayer, frotgas[nLayer]);
113  }
114  // end of MDT gas layers
115 
116  vcave->AddNode(mdtfwd,1);
117 
118  return;
119 }
#define PndMdt_SVThickness
Definition: PndMdtForward.h:23
FairGeoLoader * geoLoad
FairGeoMedia * Media
#define PndMdt_FWD_Fe_DZ
Definition: PndMdtForward.h:11
#define PndMdt_FWD_DX
Definition: PndMdtForward.h:8
#define PndMdt_FWD_DY
Definition: PndMdtForward.h:9
TGeoManager * gGeoManager
#define PndMdt_FWD_Hole_DX
Definition: PndMdtForward.h:14
FairGeoBuilder * geobuild
Double_t
#define PndMdt_FWD_Hole_DY
Definition: PndMdtForward.h:15
FairGeoInterface * geoFace
void PndMdt::PndMdtMagnet ( )
private

Definition at line 33 of file PndMdtMagnet.cxx.

References CAMath::Cos(), Double_t, dz, geobuild, geoFace, geoLoad, gGeoManager, i, Media, PndMdtMagnet_Barrel_Displacement, PndMdtMagnet_Barrel_Length, PndMdtMagnet_Endcap_Height, PndMdtMagnet_H01_Length, PndMdtMagnet_H02_H, PndMdtMagnet_H02_V, PndMdtMagnet_H03_H, PndMdtMagnet_H03_V, PndMdtMagnet_H04_H, PndMdtMagnet_H04_V, PndMdtMagnet_H05_H, PndMdtMagnet_H05_V, PndMdtMagnet_H06_H, PndMdtMagnet_H06_V, PndMdtMagnet_H_D_R1, PndMdtMagnet_H_D_R2, PndMdtMagnet_H_U_R, PndMdtMagnet_H_U_X, PndMdtMagnet_H_U_Z, PndMdtMagnet_L100, PndMdtMagnet_L101, PndMdtMagnet_L102, PndMdtMagnet_L103, PndMdtMagnet_L104, PndMdtMagnet_L105, PndMdtMagnet_L106, PndMdtMagnet_L107, PndMdtMagnet_L108, PndMdtMagnet_L109, PndMdtMagnet_L110, PndMdtMagnet_L111, PndMdtMagnet_L112, PndMdtMagnet_L200, PndMdtMagnet_L201, PndMdtMagnet_L202, PndMdtMagnet_L203, PndMdtMagnet_L204, PndMdtMagnet_Th1, PndMdtMagnet_Th2, CAMath::Sin(), CAMath::Tan(), and TString.

Referenced by ConstructGeometry().

34 {
35  TString vname = "cave";
36  vname = vname.Strip();
37  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
38 
39  //General definitions
40  TGeoVolume* mag = new TGeoVolumeAssembly("PndMdtMagnet");
41  TGeoVolume* magBarrel = new TGeoVolumeAssembly("PndMdtMagnetBarrel");
42  TGeoVolume* magEndcap = new TGeoVolumeAssembly("PndMdtMagnetEndcap");
43 
44  //Additional definitions
45  Text_t buffer[30];
46  Text_t longbuffer[250];
47  Double_t mpx, mpy, mpz;
48  Double_t mx0, my0, mz0;
49  Double_t my;
50  int k;
51  Double_t dx1, dx2, dy1, dy2, dz;
52  TGeoRotation tRot, tRotSlice;
53  //Double_t angle; //[R.K. 01/2017] unused variable?
54 
55  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
56  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
57  FairGeoMedia *Media = geoFace->getMedia();
58  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
59  FairGeoMedium *medmdtiron = Media->getMedium("iron");
60  geobuild->createMedium(medmdtiron);
61 
62  //creating the holes
63  new TGeoBBox("mhbox1",((Double_t)PndMdtMagnet_H01_Length)/10.0,((Double_t)PndMdtMagnet_H01_Length)/10.0,((Double_t)PndMdtMagnet_L201)/10.0,0);
64  new TGeoBBox("mhbox2",((Double_t)PndMdtMagnet_H02_H)/10.0,0.5+((Double_t)PndMdtMagnet_Th2)/10.0,((Double_t)PndMdtMagnet_H02_V)/10.0,0);
65  new TGeoBBox("mhbox3",((Double_t)PndMdtMagnet_H03_H)/10.0,0.5+((Double_t)PndMdtMagnet_Th2)/10.0,((Double_t)PndMdtMagnet_H03_V)/10.0,0);
66  new TGeoBBox("mhbox4",((Double_t)PndMdtMagnet_H04_H)/10.0,0.5+((Double_t)PndMdtMagnet_Th2)/10.0,((Double_t)PndMdtMagnet_H04_V)/10.0,0);
67  new TGeoBBox("mhbox5",((Double_t)PndMdtMagnet_H05_H)/10.0,0.5+((Double_t)PndMdtMagnet_Th2)/10.0,((Double_t)PndMdtMagnet_H05_V)/10.0,0);
68  new TGeoBBox("mhbox6",((Double_t)PndMdtMagnet_H06_H)/10.0,0.5+((Double_t)PndMdtMagnet_Th2)/10.0,((Double_t)PndMdtMagnet_H06_V)/10.0,0);
69 
70  new TGeoBBox("mhupbox",((Double_t)PndMdtMagnet_H_U_X)/10.0,((Double_t)PndMdtMagnet_H_U_Z)/10.0,((Double_t)PndMdtMagnet_L201)/10.0,0);
71  new TGeoTube("mhuptub",0., ((Double_t)PndMdtMagnet_H_U_R)/10.0,((Double_t)PndMdtMagnet_L201)/10.0);
72  new TGeoTube("mhdotub1", 0., ((Double_t)PndMdtMagnet_H_D_R1)/10.0,((Double_t)PndMdtMagnet_L201)/10.0);
73  new TGeoTube("mhdotub2", 0., ((Double_t)PndMdtMagnet_H_D_R2)/10.0,((Double_t)PndMdtMagnet_L201)/10.0);
74 
75 
76  //MdtMagnetBarrel
77  tRot.RotateX(90.0);
80  for(int i=0; i<13; i++)
81  {
82  switch(i)
83  {
84  case 0:
86  mpz = (Double_t)PndMdtMagnet_Th2;
87  break;
88  case 1:
91  break;
92  case 2:
95  break;
96  case 3:
99  break;
100  case 4:
102  mpz = (Double_t)PndMdtMagnet_Th1;
103  break;
104  case 5:
106  mpz = (Double_t)PndMdtMagnet_Th1;
107  break;
108  case 6:
110  mpz = (Double_t)PndMdtMagnet_Th1;
111  break;
112  case 7:
114  mpz = (Double_t)PndMdtMagnet_Th1;
115  break;
116  case 8:
118  mpz = (Double_t)PndMdtMagnet_Th1;
119  break;
120  case 9:
122  mpz = (Double_t)PndMdtMagnet_Th1;
123  break;
124  case 10:
126  mpz = (Double_t)PndMdtMagnet_Th1;
127  break;
128  case 11:
130  mpz = (Double_t)PndMdtMagnet_Th1;
131  break;
132  case 12:
134  mpz = (Double_t)PndMdtMagnet_Th2;
135  break;
136  };
137  my = my0;
138  mpx = (my - mpz)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
139  sprintf(buffer,"mbox%i",i);
140  TGeoBBox* mbox = new TGeoBBox(buffer,mpx/10.0,mpy/10.0,mpz/10.0,0);
141  TGeoTranslation* mtgt = new TGeoTranslation(0.0,mz0/10.0,0.0);
142  mtgt->SetName("mtgt");
143  mtgt->RegisterYourself();
144 
145  // sprintf(buffer,"mbox%i:mtgt-mhbox1",i);
146 // TGeoCompositeShape* mtgcs = new TGeoCompositeShape("mtgcs",buffer);
147  for(int j=0; j<8; j++)
148  {
149  if(j==0 || j==4)
150  {
151  if (i<3)
152  {
153  sprintf(buffer,"mbox%i:mtgt-mhuptub",i);
154  }
155  else
156  {
157  if (j==0) sprintf(buffer,"mbox%i:mtgt-mhupbox",i);
158  if (j==4) sprintf(buffer,"mbox%i:mtgt-mhdotub2",i);
159  }
160  //sprintf(buffer,"mbox%i:mtgt-mhbox1",i);
161  TGeoCompositeShape* mtgcs = new TGeoCompositeShape("mtgcs",buffer);
162 
163  k=j+2;
164  mx0 = my*TMath::Cos(((Double_t)k)*TMath::ACos(-1.0)/4.0);
165  my0 = my*TMath::Sin(((Double_t)k)*TMath::ACos(-1.0)/4.0);
166  sprintf(buffer,"magnet%i",300+8*i+j);
167  TGeoVolume* volume = new TGeoVolume(buffer,mtgcs,gGeoManager->GetMedium("iron"));
168  volume->SetLineColor(3);
169  magBarrel->AddNode(volume,300+8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,0.0,new TGeoRotation(tRot)));
170  }
171  else
172  {
173  if(j==2 || j==6) k=j-2;
174  else k=j;
175  mx0 = my*TMath::Cos(((Double_t)k)*TMath::ACos(-1.0)/4.0);
176  my0 = my*TMath::Sin(((Double_t)k)*TMath::ACos(-1.0)/4.0);
177  sprintf(buffer,"magnet%i",300+8*i+j);
178  TGeoVolume* volume = new TGeoVolume(buffer,mbox,gGeoManager->GetMedium("iron"));
179  volume->SetLineColor(3);
180  magBarrel->AddNode(volume,300+8*i+j,new TGeoCombiTrans(mx0/10.0,my0/10.0,mz0/10.0,new TGeoRotation(tRot)));
181  };
182  tRot.RotateZ(-45.0);
183  };
184  };
185 
186 
187  //MdtMagnetEndcap
188 
189  TGeoRotation magtgrl;
190  magtgrl.RotateY(0.0);
191  TGeoRotation* magtgr0 = new TGeoRotation(magtgrl);
192  magtgr0->SetName("magtgr0");
193  magtgr0->RegisterYourself();
194  magtgrl.RotateY(45.0);
195  TGeoRotation* magtgr1 = new TGeoRotation(magtgrl);
196  magtgr1->SetName("magtgr1");
197  magtgr1->RegisterYourself();
198  magtgrl.RotateY(45.0);
199  TGeoRotation* magtgr2 = new TGeoRotation(magtgrl);
200  magtgr2->SetName("magtgr2");
201  magtgr2->RegisterYourself();
202  magtgrl.RotateY(45.0);
203  TGeoRotation* magtgr3 = new TGeoRotation(magtgrl);
204  magtgr3->SetName("magtgr3");
205  magtgr3->RegisterYourself();
206  magtgrl.RotateY(45.0);
207  TGeoRotation* magtgr4 = new TGeoRotation(magtgrl);
208  magtgr4->SetName("magtgr4");
209  magtgr4->RegisterYourself();
210  magtgrl.RotateY(45.0);
211  TGeoRotation* magtgr5 = new TGeoRotation(magtgrl);
212  magtgr5->SetName("magtgr5");
213  magtgr5->RegisterYourself();
214  magtgrl.RotateY(45.0);
215  TGeoRotation* magtgr6 = new TGeoRotation(magtgrl);
216  magtgr6->SetName("magtgr6");
217  magtgr6->RegisterYourself();
218  magtgrl.RotateY(45.0);
219  TGeoRotation* magtgr7 = new TGeoRotation(magtgrl);
220  magtgr7->SetName("magtgr7");
221  magtgr7->RegisterYourself();
222 
223  dx2 = 0.0;
224  dy1 = (Double_t)PndMdtMagnet_Th2;
225  dy2 = (Double_t)PndMdtMagnet_Th2;
226  dx1 = ((Double_t)PndMdtMagnet_Endcap_Height)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
229  TGeoTranslation* magtgt = new TGeoTranslation(0.0,0.0,my/(-10.0));
230  magtgt->SetName("magtgt");
231  magtgt->RegisterYourself();
232  new TGeoTrd2("magtrd",dx1/10.0,dx2/10.0,dy1/10.0,dy2/10.0,dz/10.0);
233 
234  for(int i=0; i<5; i++)
235  {
236  switch(i)
237  {
238  case 0:
240  break;
241  case 1:
243  break;
244  case 2:
246  break;
247  case 3:
249  break;
250  case 4:
252  break;
253  };
254  for(int j=0; j<8; j++)
255  {
256  sprintf(buffer,"magtgcs%i",(8*i)+j);
257  sprintf(longbuffer,"magtrd:magtgt-mhbox%i:magtgr%i",i+2,j);
258  TGeoCompositeShape* magtgcs = new TGeoCompositeShape(buffer,longbuffer);
259  sprintf(buffer,"magnet%i",500+8*i+j);
260  TGeoVolume* volume = new TGeoVolume(buffer,magtgcs,gGeoManager->GetMedium("iron"));
261  volume->SetLineColor(3);
262  magEndcap->AddNode(volume,500+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
263  tRot.RotateZ(-45.0);
264  };
265  };
266 
267  mag->AddNode(magBarrel,1);
268  mag->AddNode(magEndcap,1);
269  vcave->AddNode(mag,1);
270 
271  return;
272 }
#define PndMdtMagnet_L100
Definition: PndMdtMagnet.h:15
#define PndMdtMagnet_L104
Definition: PndMdtMagnet.h:19
#define PndMdtMagnet_L111
Definition: PndMdtMagnet.h:26
#define PndMdtMagnet_H02_V
Definition: PndMdtMagnet.h:42
#define PndMdtMagnet_L108
Definition: PndMdtMagnet.h:23
#define PndMdtMagnet_L102
Definition: PndMdtMagnet.h:17
#define PndMdtMagnet_L200
Definition: PndMdtMagnet.h:32
#define PndMdtMagnet_H05_H
Definition: PndMdtMagnet.h:49
#define PndMdtMagnet_H01_Length
Definition: PndMdtMagnet.h:39
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
#define PndMdtMagnet_H06_H
Definition: PndMdtMagnet.h:53
static T Sin(const T &x)
Definition: PndCAMath.h:42
#define PndMdtMagnet_H03_H
Definition: PndMdtMagnet.h:45
float Tan(float x)
Definition: PndCAMath.h:165
#define PndMdtMagnet_H02_H
Definition: PndMdtMagnet.h:43
#define PndMdtMagnet_Th1
Definition: PndMdtMagnet.h:8
#define PndMdtMagnet_L203
Definition: PndMdtMagnet.h:35
#define PndMdtMagnet_H_U_R
Definition: PndMdtMagnet.h:58
TGeoManager * gGeoManager
#define PndMdtMagnet_L202
Definition: PndMdtMagnet.h:34
static T Cos(const T &x)
Definition: PndCAMath.h:43
#define PndMdtMagnet_L107
Definition: PndMdtMagnet.h:22
#define PndMdtMagnet_H05_V
Definition: PndMdtMagnet.h:48
#define PndMdtMagnet_H_U_Z
Definition: PndMdtMagnet.h:57
#define PndMdtMagnet_H04_H
Definition: PndMdtMagnet.h:47
FairGeoBuilder * geobuild
Double_t
#define PndMdtMagnet_Barrel_Displacement
Definition: PndMdtMagnet.h:13
#define PndMdtMagnet_L110
Definition: PndMdtMagnet.h:25
#define PndMdtMagnet_H_U_X
Definition: PndMdtMagnet.h:56
#define PndMdtMagnet_Endcap_Height
Definition: PndMdtMagnet.h:30
#define PndMdtMagnet_L101
Definition: PndMdtMagnet.h:16
#define PndMdtMagnet_L201
Definition: PndMdtMagnet.h:33
#define PndMdtMagnet_H_D_R1
Definition: PndMdtMagnet.h:59
#define PndMdtMagnet_Barrel_Length
Definition: PndMdtMagnet.h:12
#define PndMdtMagnet_L106
Definition: PndMdtMagnet.h:21
#define PndMdtMagnet_H04_V
Definition: PndMdtMagnet.h:46
#define PndMdtMagnet_L112
Definition: PndMdtMagnet.h:27
#define PndMdtMagnet_H06_V
Definition: PndMdtMagnet.h:52
#define PndMdtMagnet_L103
Definition: PndMdtMagnet.h:18
#define PndMdtMagnet_Th2
Definition: PndMdtMagnet.h:9
#define PndMdtMagnet_H_D_R2
Definition: PndMdtMagnet.h:60
FairGeoInterface * geoFace
#define PndMdtMagnet_L105
Definition: PndMdtMagnet.h:20
#define PndMdtMagnet_H03_V
Definition: PndMdtMagnet.h:44
#define PndMdtMagnet_L109
Definition: PndMdtMagnet.h:24
#define PndMdtMagnet_L204
Definition: PndMdtMagnet.h:36
void PndMdt::PndMdtMFIron ( )
private

Definition at line 34 of file PndMdtMFIron.cxx.

References Double_t, dz, geobuild, geoFace, geoLoad, gGeoManager, i, Media, PndMdtMFIron_H02_H, PndMdtMFIron_H02_V, PndMdtMFIron_H03_H, PndMdtMFIron_H03_V, PndMdtMFIron_H04_H, PndMdtMFIron_H04_V, PndMdtMFIron_H05_H, PndMdtMFIron_H05_V, PndMdtMFIron_H06_H, PndMdtMFIron_H06_V, PndMdtMFIron_Height, PndMdtMFIron_L200, PndMdtMFIron_L201, PndMdtMFIron_L202, PndMdtMFIron_L203, PndMdtMFIron_L204, PndMdtMFIron_PUMP_H, PndMdtMFIron_PUMP_V, PndMdtMFIron_Th2, CAMath::Tan(), and TString.

Referenced by ConstructGeometry().

35 {
36  TString vname = "cave";
37  vname = vname.Strip();
38  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
39 
40 //General definitions
41  TGeoVolume* mdtmfi = new TGeoVolumeAssembly("MdtMFIron");
42 
43 //Additional definitions
44  Text_t buffer[30];
45  Text_t longbuffer[250];
46  //Double_t mpx, mpy, mpz;
47  //Double_t mx0, my0, //[R.K. 01/2017] unused variable?
48  Double_t mz0;
49  Double_t my;
50  //int k; //[R.K. 01/2017] unused variable?
51  Double_t dx1, dx2, dy1, dy2, dz;
52  TGeoRotation tRot, tRotSlice;
53  //Double_t angle; //[R.K. 01/2017] unused variable?
54 
55  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
56  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
57  FairGeoMedia *Media = geoFace->getMedia();
58  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
59  FairGeoMedium *medIron = Media->getMedium("iron");
60  geobuild->createMedium(medIron);
61 
62 //creating the holes
63  new TGeoBBox("mfihbox2",((Double_t)PndMdtMFIron_H02_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_H02_V)/10.0,0);
64  new TGeoBBox("mfihbox3",((Double_t)PndMdtMFIron_H03_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_H03_V)/10.0,0);
65  new TGeoBBox("mfihbox4",((Double_t)PndMdtMFIron_H04_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_H04_V)/10.0,0);
66  new TGeoBBox("mfihbox5",((Double_t)PndMdtMFIron_H05_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_H05_V)/10.0,0);
67  new TGeoBBox("mfihbox6",((Double_t)PndMdtMFIron_H06_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_H06_V)/10.0,0);
68  new TGeoBBox("mfihboxpmp2",((Double_t)PndMdtMFIron_PUMP_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_PUMP_V)/10.0,0);
69  new TGeoBBox("mfihboxpmp3",((Double_t)PndMdtMFIron_PUMP_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_PUMP_V)/10.0,0);
70  new TGeoBBox("mfihboxpmp4",((Double_t)PndMdtMFIron_PUMP_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_PUMP_V)/10.0,0);
71  new TGeoBBox("mfihboxpmp5",((Double_t)PndMdtMFIron_PUMP_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_PUMP_V)/10.0,0);
72  new TGeoBBox("mfihboxpmp6",((Double_t)PndMdtMFIron_PUMP_H)/10.0,10.0+((Double_t)PndMdtMFIron_Th2)/10.0,((Double_t)PndMdtMFIron_PUMP_V)/10.0,0);
73 
74 
75 
76 //MdtMF
77  tRot.RotateX(90.0);
78  TGeoRotation mfitgrl;
79  mfitgrl.RotateY(0.0);
80  TGeoRotation* mfitgr0 = new TGeoRotation(mfitgrl);
81  mfitgr0->SetName("mfitgr0");
82  mfitgr0->RegisterYourself();
83  mfitgrl.RotateY(45.0);
84  TGeoRotation* mfitgr1 = new TGeoRotation(mfitgrl);
85  mfitgr1->SetName("mfitgr1");
86  mfitgr1->RegisterYourself();
87  mfitgrl.RotateY(45.0);
88  TGeoRotation* mfitgr2 = new TGeoRotation(mfitgrl);
89  mfitgr2->SetName("mfitgr2");
90  mfitgr2->RegisterYourself();
91  mfitgrl.RotateY(45.0);
92  TGeoRotation* mfitgr3 = new TGeoRotation(mfitgrl);
93  mfitgr3->SetName("mfitgr3");
94  mfitgr3->RegisterYourself();
95  mfitgrl.RotateY(45.0);
96  TGeoRotation* mfitgr4 = new TGeoRotation(mfitgrl);
97  mfitgr4->SetName("mfitgr4");
98  mfitgr4->RegisterYourself();
99  mfitgrl.RotateY(45.0);
100  TGeoRotation* mfitgr5 = new TGeoRotation(mfitgrl);
101  mfitgr5->SetName("mfitgr5");
102  mfitgr5->RegisterYourself();
103  mfitgrl.RotateY(45.0);
104  TGeoRotation* mfitgr6 = new TGeoRotation(mfitgrl);
105  mfitgr6->SetName("mfitgr6");
106  mfitgr6->RegisterYourself();
107  mfitgrl.RotateY(45.0);
108  TGeoRotation* mfitgr7 = new TGeoRotation(mfitgrl);
109  mfitgr7->SetName("mfitgr7");
110  mfitgr7->RegisterYourself();
111 
112  dx2 = 0.0;
113  dy1 = (Double_t)PndMdtMFIron_Th2;
114  dy2 = (Double_t)PndMdtMFIron_Th2;
115  dx1 = ((Double_t)PndMdtMFIron_Height)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
116  my = ((Double_t)PndMdtMFIron_Height)/2.0;
117  dz = ((Double_t)PndMdtMFIron_Height)/2.0;
118  TGeoTranslation* mfitgt = new TGeoTranslation(0.0,0.0,my/(-10.0));
119  mfitgt->SetName("mfitgt");
120  mfitgt->RegisterYourself();
121  new TGeoTrd2("mfitrd",dx1/10.0,dx2/10.0,dy1/10.0,dy2/10.0,dz/10.0);
122 
123  for(int i=0; i<5; i++)
124  {
125  switch(i)
126  {
127  case 0:
129  break;
130  case 1:
132  break;
133  case 2:
135  break;
136  case 3:
138  break;
139  case 4:
141  break;
142  };
143  for(int j=0; j<8; j++)
144  {
145  sprintf(buffer,"mfitgcs%i",(8*i)+j);
146  sprintf(longbuffer,"mfitrd:mfitgt-mfihbox%i:mfitgr%i-mfihboxpmp%i:mfitgr%i",i+2,j,i+2,j);
147  TGeoCompositeShape* mfitgcs = new TGeoCompositeShape(buffer,longbuffer);
148  sprintf(buffer,"mag%i",600+8*i+j);
149  TGeoVolume* volume = new TGeoVolume(buffer,mfitgcs,gGeoManager->GetMedium("iron"));
150  volume->SetLineColor(3);
151  mdtmfi->AddNode(volume,600+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
152  tRot.RotateZ(-45.0);
153  };
154  };
155 
156  vcave->AddNode(mdtmfi,1);
157 
158  return;
159 }
#define PndMdtMFIron_Th2
Definition: PndMdtMFIron.h:10
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
#define PndMdtMFIron_H03_V
Definition: PndMdtMFIron.h:24
float Tan(float x)
Definition: PndCAMath.h:165
TGeoManager * gGeoManager
#define PndMdtMFIron_H05_H
Definition: PndMdtMFIron.h:29
#define PndMdtMFIron_PUMP_V
Definition: PndMdtMFIron.h:34
#define PndMdtMFIron_PUMP_H
Definition: PndMdtMFIron.h:35
#define PndMdtMFIron_H06_V
Definition: PndMdtMFIron.h:30
FairGeoBuilder * geobuild
#define PndMdtMFIron_L201
Definition: PndMdtMFIron.h:16
Double_t
#define PndMdtMFIron_H02_V
Definition: PndMdtMFIron.h:22
#define PndMdtMFIron_H03_H
Definition: PndMdtMFIron.h:25
#define PndMdtMFIron_L202
Definition: PndMdtMFIron.h:17
#define PndMdtMFIron_Height
Definition: PndMdtMFIron.h:13
#define PndMdtMFIron_L204
Definition: PndMdtMFIron.h:19
#define PndMdtMFIron_H05_V
Definition: PndMdtMFIron.h:28
#define PndMdtMFIron_H04_V
Definition: PndMdtMFIron.h:26
#define PndMdtMFIron_L200
Definition: PndMdtMFIron.h:15
#define PndMdtMFIron_L203
Definition: PndMdtMFIron.h:18
FairGeoInterface * geoFace
#define PndMdtMFIron_H02_H
Definition: PndMdtMFIron.h:23
#define PndMdtMFIron_H06_H
Definition: PndMdtMFIron.h:31
#define PndMdtMFIron_H04_H
Definition: PndMdtMFIron.h:27
void PndMdt::PndMdtMuonFilter ( )
private

Definition at line 32 of file PndMdtMuonFilter.cxx.

References Double_t, dz, geobuild, geoFace, geoLoad, gGeoManager, i, Media, PndMdt_H07_H, PndMdt_H07_V, PndMdt_H08_H, PndMdt_H08_V, PndMdt_H09_H, PndMdt_H09_V, PndMdt_H10_H, PndMdt_H10_V, PndMdt_H11_H, PndMdt_H11_V, PndMdt_H12_H, PndMdt_H12_V, PndMdt_MF_Height, PndMdt_PUMP_H, PndMdt_PUMP_V, PndMdt_SV300, PndMdt_SV301, PndMdt_SV302, PndMdt_SV303, PndMdt_SV304, PndMdt_SV305, PndMdt_SVThickness, CAMath::Tan(), and TString.

Referenced by ConstructGeometry().

33 {
34  TString vname = "Mdt";
35  vname = vname.Strip();
36  TGeoVolume* vcave = gGeoManager->FindVolumeFast(vname.Data());
37 
38 //General definitions
39  TGeoVolume* mdtmf = new TGeoVolumeAssembly("MdtMuonFilter");
40  TGeoVolume* mdtmfl00 = new TGeoVolumeAssembly("MdtMuonFilterLayer00");
41  TGeoVolume* mdtmfl01 = new TGeoVolumeAssembly("MdtMuonFilterLayer01");
42  TGeoVolume* mdtmfl02 = new TGeoVolumeAssembly("MdtMuonFilterLayer02");
43  TGeoVolume* mdtmfl03 = new TGeoVolumeAssembly("MdtMuonFilterLayer03");
44  TGeoVolume* mdtmfl04 = new TGeoVolumeAssembly("MdtMuonFilterLayer04");
45  TGeoVolume* mdtmfl05 = new TGeoVolumeAssembly("MdtMuonFilterLayer05");
46 
47 //Additional definitions
48  Text_t buffer[30];
49  Text_t longbuffer[250];
50  //Double_t mpx, mpy, mpz; //[R.K. 01/2017] unused variable?
51  //Double_t mx0, my0, //[R.K. 01/2017] unused variable?
52  Double_t mz0;
53  Double_t my;
54  //int k; //[R.K. 01/2017] unused variable?
55  Double_t dx1, dx2, dy1, dy2, dz;
56  TGeoRotation tRot, tRotSlice;
57  //Double_t angle; //[R.K. 01/2017] unused variable?
58 
59  FairGeoLoader*geoLoad = FairGeoLoader::Instance();
60  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
61  FairGeoMedia *Media = geoFace->getMedia();
62  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
63  FairGeoMedium *medmdtArCO2 = Media->getMedium("MDTMixture");
64  geobuild->createMedium(medmdtArCO2);
65 
66 //creating the holes
67  new TGeoBBox("mfhbox2",((Double_t)PndMdt_H07_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H07_V)/10.0,0);
68  new TGeoBBox("mfhbox3",((Double_t)PndMdt_H08_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H08_V)/10.0,0);
69  new TGeoBBox("mfhbox4",((Double_t)PndMdt_H09_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H09_V)/10.0,0);
70  new TGeoBBox("mfhbox5",((Double_t)PndMdt_H10_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H10_V)/10.0,0);
71  new TGeoBBox("mfhbox6",((Double_t)PndMdt_H11_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H11_V)/10.0,0);
72  new TGeoBBox("mfhbox7",((Double_t)PndMdt_H12_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_H12_V)/10.0,0);
73  new TGeoBBox("mfhboxpmp2",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
74  new TGeoBBox("mfhboxpmp3",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
75  new TGeoBBox("mfhboxpmp4",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
76  new TGeoBBox("mfhboxpmp5",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
77  new TGeoBBox("mfhboxpmp6",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
78  new TGeoBBox("mfhboxpmp7",((Double_t)PndMdt_PUMP_H)/10.0,10.0+((Double_t)PndMdt_SVThickness)/10.0,((Double_t)PndMdt_PUMP_V)/10.0,0);
79 
80 
81 //MdtMF
82  tRot.RotateX(90.0);
83  TGeoRotation mftgrl;
84  mftgrl.RotateY(0.0);
85  TGeoRotation* mftgr0 = new TGeoRotation(mftgrl);
86  mftgr0->SetName("mftgr0");
87  mftgr0->RegisterYourself();
88  mftgrl.RotateY(45.0);
89  TGeoRotation* mftgr1 = new TGeoRotation(mftgrl);
90  mftgr1->SetName("mftgr1");
91  mftgr1->RegisterYourself();
92  mftgrl.RotateY(45.0);
93  TGeoRotation* mftgr2 = new TGeoRotation(mftgrl);
94  mftgr2->SetName("mftgr2");
95  mftgr2->RegisterYourself();
96  mftgrl.RotateY(45.0);
97  TGeoRotation* mftgr3 = new TGeoRotation(mftgrl);
98  mftgr3->SetName("mftgr3");
99  mftgr3->RegisterYourself();
100  mftgrl.RotateY(45.0);
101  TGeoRotation* mftgr4 = new TGeoRotation(mftgrl);
102  mftgr4->SetName("mftgr4");
103  mftgr4->RegisterYourself();
104  mftgrl.RotateY(45.0);
105  TGeoRotation* mftgr5 = new TGeoRotation(mftgrl);
106  mftgr5->SetName("mftgr5");
107  mftgr5->RegisterYourself();
108  mftgrl.RotateY(45.0);
109  TGeoRotation* mftgr6 = new TGeoRotation(mftgrl);
110  mftgr6->SetName("mftgr6");
111  mftgr6->RegisterYourself();
112  mftgrl.RotateY(45.0);
113  TGeoRotation* mftgr7 = new TGeoRotation(mftgrl);
114  mftgr7->SetName("mftgr7");
115  mftgr7->RegisterYourself();
116 
117  dx2 = 0.0;
118  dy1 = (Double_t)PndMdt_SVThickness;
119  dy2 = (Double_t)PndMdt_SVThickness;
120  dx1 = ((Double_t)PndMdt_MF_Height)*(TMath::Tan(TMath::ACos(-1.0)/8.0));
121  my = ((Double_t)PndMdt_MF_Height)/2.0;
122  dz = ((Double_t)PndMdt_MF_Height)/2.0;
123  TGeoTranslation* mftgt = new TGeoTranslation(0.0,0.0,my/(-10.0));
124  mftgt->SetName("mftgt");
125  mftgt->RegisterYourself();
126  new TGeoTrd2("mftrd",dx1/10.0,dx2/10.0,dy1/10.0,dy2/10.0,dz/10.0);
127 
128  for(int i=0; i<6; i++)
129  {
130  switch(i)
131  {
132  case 0:
133  mz0 = (Double_t)PndMdt_SV300;
134  break;
135  case 1:
136  mz0 = (Double_t)PndMdt_SV301;
137  break;
138  case 2:
139  mz0 = (Double_t)PndMdt_SV302;
140  break;
141  case 3:
142  mz0 = (Double_t)PndMdt_SV303;
143  break;
144  case 4:
145  mz0 = (Double_t)PndMdt_SV304;
146  break;
147  case 5:
148  mz0 = (Double_t)PndMdt_SV305;
149  break;
150  };
151  for(int j=0; j<8; j++)
152  {
153  sprintf(buffer,"mftgcs%i",(8*i)+j);
154  sprintf(longbuffer,"mftrd:mftgt-mfhbox%i:mftgr%i-mfhboxpmp%i:mftgr%i",i+2,j,i+2,j);
155  TGeoCompositeShape* mftgcs = new TGeoCompositeShape(buffer,longbuffer);
156  //sprintf(buffer,"muon%i",300+8*i+j);
157  sprintf(buffer,"MDT%is%il%ib%iw%i", 3, j, i, 0, 0);
158  TGeoVolume* volume = new TGeoVolume(buffer,mftgcs,gGeoManager->GetMedium("MDTMixture"));
159  AddSensitiveVolume(volume);
160  volume->SetLineColor(1);
161 // mdtmf->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
162  switch(i)
163  {
164  case 0:
165  mdtmfl00->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
166  break;
167  case 1:
168  mdtmfl01->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
169  break;
170  case 2:
171  mdtmfl02->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
172  break;
173  case 3:
174  mdtmfl03->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
175  break;
176  case 4:
177  mdtmfl04->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
178  break;
179  case 5:
180  mdtmfl05->AddNode(volume,300+8*i+j,new TGeoCombiTrans(0.0,0.0,mz0/10.0,new TGeoRotation(tRot)));
181  break;
182  };
183  tRot.RotateZ(-45.0);
184  };
185  };
186 
187  mdtmf->AddNode(mdtmfl00,1);
188  mdtmf->AddNode(mdtmfl01,1);
189  mdtmf->AddNode(mdtmfl02,1);
190  mdtmf->AddNode(mdtmfl03,1);
191  mdtmf->AddNode(mdtmfl04,1);
192  mdtmf->AddNode(mdtmfl05,1);
193  vcave->AddNode(mdtmf,1);
194 
195  return;
196 }
#define PndMdt_PUMP_V
#define PndMdt_SVThickness
Definition: PndMdtForward.h:23
FairGeoLoader * geoLoad
Int_t i
Definition: run_full.C:25
FairGeoMedia * Media
#define PndMdt_SV303
#define PndMdt_H10_H
float Tan(float x)
Definition: PndCAMath.h:165
#define PndMdt_H07_H
#define PndMdt_SV300
TGeoManager * gGeoManager
#define PndMdt_H12_H
#define PndMdt_H08_H
#define PndMdt_H12_V
#define PndMdt_SV304
#define PndMdt_H09_H
FairGeoBuilder * geobuild
Double_t
#define PndMdt_SV305
#define PndMdt_H08_V
#define PndMdt_H11_H
#define PndMdt_H09_V
#define PndMdt_H10_V
FairGeoInterface * geoFace
#define PndMdt_SV301
#define PndMdt_PUMP_H
#define PndMdt_H07_V
#define PndMdt_MF_Height
#define PndMdt_H11_V
#define PndMdt_SV302
void PndMdt::Print ( ) const

Definition at line 68 of file PndMdt.cxx.

References fMdtCollection, i, and nHits.

Referenced by EndOfEvent().

69 {
70  Int_t nHits = fMdtCollection->GetEntriesFast();
71  for (Int_t i=0; i<nHits; i++) (*fMdtCollection)[i]->Print();
72 }
Int_t i
Definition: run_full.C:25
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
int nHits
Definition: RiemannTest.C:16
Bool_t PndMdt::ProcessHits ( FairVolume *  vol)

Definition at line 196 of file PndMdt.cxx.

References name, ProcessHitsFast(), ProcessHitsRoot(), and TString.

197 {
198  TString name = gMC->CurrentVolOffName(1);
199  if (name.Contains("BA") || name.Contains("Cell")) ProcessHitsRoot(vol);
200  else ProcessHitsFast(vol);
201 
202  // if (gMC->IsTrackEntering() || gMC->IsNewTrack() )
203  return kTRUE;
204 }
Bool_t ProcessHitsFast(FairVolume *vol)
Definition: PndMdt.cxx:207
TString name
Bool_t ProcessHitsRoot(FairVolume *vol)
Definition: PndMdt.cxx:261
Bool_t PndMdt::ProcessHitsFast ( FairVolume *  vol)

if you add a point then tell the stack! here

Definition at line 207 of file PndMdt.cxx.

References PndStack::AddPoint(), fELoss, fMdtCollection, fMom_In, fPos_In, fTime, fTrkIn, PndMdtID::Identifier(), kMDT, name, P, ResetParameters(), and TString.

Referenced by ProcessHits().

208 {
209  if (gMC->TrackCharge()==0) return kTRUE; // skip neutrals
210 
211  TString name = vol->GetName();
212 
213  if (gMC->IsTrackEntering() || gMC->IsNewTrack() )
214  {
215  fPos_In.SetXYZM(0.,0.,0.,0.);
216  fMom_In.SetXYZM(0.,0.,0.,0.);
217  gMC->TrackPosition(fPos_In);
218  gMC->TrackMomentum(fMom_In);
219  fTrkIn = gMC->GetStack()->GetCurrentTrackNumber();
220  fTime = gMC->TrackTime()*1e9;
221  }; // end entering
222 
223  fELoss += gMC->Edep();
224 
225  if (gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared() )
226  {
227  Int_t TrNo=gMC->GetStack()->GetCurrentTrackNumber();
228  //Int_t pdg= gMC->TrackPid(); //[R.K. 01/2017] unused variable?
229  if ( (TrNo == fTrkIn) && (fELoss >0.) )
230  {
231  TLorentzVector lPos, lMom;
232  Int_t iMod;
233  Int_t iOct;
234  Int_t iLayer;
235  Int_t iBox;
236  Int_t iWire;
237  sscanf(name,"MDT%is%il%ib%iw%i", &iMod, &iOct, &iLayer, &iBox, &iWire);
238 
239  Int_t detectorId = PndMdtID::Identifier(iMod, iOct, iLayer, iBox, iWire);
240  gMC->TrackPosition(lPos); // cm
241  gMC->TrackMomentum(lMom); // GeV
242  TClonesArray& clref = *fMdtCollection;
243  Int_t size = fMdtCollection->GetEntriesFast();
244  PndMdtPoint *P= new(clref[size]) PndMdtPoint (TrNo,detectorId, lPos.Vect(), lMom.Vect(), fTime,
245  gMC->TrackLength(), fELoss,
246  fPos_In.Vect(), fMom_In.Vect());
247  if(P) {
249  PndStack* stack = (PndStack*) gMC->GetStack();
250  stack->AddPoint(kMDT);
251  }
252  };
253 
254  ResetParameters();
255  };
256 
257  return kTRUE;
258 }
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
void ResetParameters()
Definition: PndMdt.cxx:84
static Int_t Identifier(Int_t iMod, Int_t iOct, Int_t iLayer, Int_t iBox, Int_t iWire)
Definition: PndMdtID.h:10
void AddPoint(DetectorId iDet)
Definition: PndStack.cxx:408
TLorentzVector fMom_In
Definition: PndMdt.h:77
TLorentzVector fPos_In
Definition: PndMdt.h:76
Float_t fTime
Definition: PndMdt.h:75
TString name
Float_t fELoss
Definition: PndMdt.h:74
GeV c P
Int_t fTrkIn
Definition: PndMdt.h:73
Bool_t PndMdt::ProcessHitsRoot ( FairVolume *  vol)

if you add a point then tell the stack! here

Definition at line 261 of file PndMdt.cxx.

References PndStack::AddPoint(), fELoss, fMdtCollection, fMom_In, fPos_In, fTime, fTrkIn, fVerboseLevel, PndMdtID::Identifier(), kMDT, name, P, ResetParameters(), and TString.

Referenced by ProcessHits().

262 {
263  if (gMC->TrackCharge()==0) return kTRUE; // skip neutrals
264 
265  TString name = gMC->CurrentVolName();
266  TString path = gMC->CurrentVolPath();
267  if (fVerboseLevel) std::cout << "Path: " << path << std::endl;
268 
269  if (gMC->IsTrackEntering() || gMC->IsNewTrack() )
270  {
271  fELoss = 0.;
272  gMC->TrackPosition(fPos_In);
273  gMC->TrackMomentum(fMom_In);
274  fTrkIn = gMC->GetStack()->GetCurrentTrackNumber();
275  fTime = gMC->TrackTime()*1e9;
276  }; // end entering
277 
278  fELoss += gMC->Edep();
279 
280  if (fVerboseLevel) cout << "pdg: " << gMC->TrackPid() << "\teloss: " << fELoss
281  <<", name"<<gMC->ParticleName(gMC->TrackPid())<< endl;
282 
283  if (gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared() )
284  {
285  Int_t TrNo=gMC->GetStack()->GetCurrentTrackNumber();
286  //Int_t pdg= gMC->TrackPid(); //[R.K. 01/2017] unused variable?
287  if ( (TrNo == fTrkIn) && (fELoss >0.) )
288  {
289  TLorentzVector lPos, lMom;
290  Int_t iMod = -1;
291  Int_t iOct;
292  Int_t iLayer;
293  Int_t iBox;
294  Int_t iWire;
295  gMC->CurrentVolID(iWire);
296  gMC->CurrentVolOffID(2,iBox);
297  gMC->CurrentVolOffID(3,iLayer);
298  gMC->CurrentVolOffID(4,iOct);
299  if (path.Contains("Barrel") ) iMod = 1;
300  if (path.Contains("Endcap")) iMod = 2;
301  if (path.Contains("MF")) iMod = 3;
302  if (path.Contains("Forward")) iMod = 4;
303 
304  if (fVerboseLevel) cout << iMod << "\t" << iOct << "\t" << iLayer << "\t" << iBox << "\t" << iWire;
305  Int_t detectorId = PndMdtID::Identifier(iMod, iOct, iLayer, iBox, iWire);
306 
307  if (fVerboseLevel) cout << "\t" << detectorId << endl;
308  gMC->TrackPosition(lPos); // cm
309  gMC->TrackMomentum(lMom); // GeV
310  TClonesArray& clref = *fMdtCollection;
311  Int_t size = fMdtCollection->GetEntriesFast();
312  PndMdtPoint *P= new(clref[size]) PndMdtPoint (TrNo,detectorId, lPos.Vect(), lMom.Vect(), fTime,
313  gMC->TrackLength(), fELoss,
314  fPos_In.Vect(), fMom_In.Vect());
315  if(P){
317  PndStack* stack = (PndStack*) gMC->GetStack();
318  stack->AddPoint(kMDT);
319  }
320  };
321 
322  ResetParameters();
323  };
324 
325  return kTRUE;
326 }
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
Bool_t fVerboseLevel
Definition: PndMdt.h:80
void ResetParameters()
Definition: PndMdt.cxx:84
static Int_t Identifier(Int_t iMod, Int_t iOct, Int_t iLayer, Int_t iBox, Int_t iWire)
Definition: PndMdtID.h:10
void AddPoint(DetectorId iDet)
Definition: PndStack.cxx:408
TLorentzVector fMom_In
Definition: PndMdt.h:77
TLorentzVector fPos_In
Definition: PndMdt.h:76
Float_t fTime
Definition: PndMdt.h:75
TString name
Float_t fELoss
Definition: PndMdt.h:74
GeV c P
Int_t fTrkIn
Definition: PndMdt.h:73
void PndMdt::Register ( )
inline

Definition at line 36 of file PndMdt.h.

References fMdtCollection.

36 { FairRootManager::Instance()->Register("MdtPoint","Mdt",fMdtCollection,kTRUE); };
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
void PndMdt::Reset ( )

Definition at line 77 of file PndMdt.cxx.

References fMdtCollection.

Referenced by EndOfEvent().

78 {
79  if (fMdtCollection) fMdtCollection->Delete();
80 }
TClonesArray * fMdtCollection
Definition: PndMdt.h:72
void PndMdt::ResetParameters ( )

Definition at line 84 of file PndMdt.cxx.

References fELoss, and fTime.

Referenced by ProcessHitsFast(), and ProcessHitsRoot().

85 {
86  fELoss = 0.;
87  fTime = 0.;
88 }
Float_t fTime
Definition: PndMdt.h:75
Float_t fELoss
Definition: PndMdt.h:74
void PndMdt::SetBarrel ( TString  name)
inline
void PndMdt::SetEndcap ( TString  name)
inline
void PndMdt::SetForward ( TString  name)
inline
void PndMdt::SetMdtCoil ( bool  opt = false)
inline
void PndMdt::SetMdtMagnet ( bool  opt = false)
inline
void PndMdt::SetMdtMFIron ( bool  opt = false)
inline
void PndMdt::SetMuonFilter ( TString  name)
inline
void PndMdt::SetVerbosity ( Bool_t  verbosity)
inline

Definition at line 46 of file PndMdt.h.

References fVerboseLevel.

46 { fVerboseLevel = verbosity; };
Bool_t fVerboseLevel
Definition: PndMdt.h:80

Member Data Documentation

TString PndMdt::fBarrel
private

Definition at line 86 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetBarrel().

Float_t PndMdt::fELoss
private

Definition at line 74 of file PndMdt.h.

Referenced by ProcessHitsFast(), ProcessHitsRoot(), and ResetParameters().

TString PndMdt::fEndcap
private

Definition at line 87 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetEndcap().

TString PndMdt::fForward
private

Definition at line 89 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetForward().

TClonesArray* PndMdt::fMdtCollection
private
TLorentzVector PndMdt::fMom_In
private

Definition at line 77 of file PndMdt.h.

Referenced by ProcessHitsFast(), and ProcessHitsRoot().

TString PndMdt::fMuonFilter
private

Definition at line 88 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetMuonFilter().

TLorentzVector PndMdt::fPos_In
private

Definition at line 76 of file PndMdt.h.

Referenced by ProcessHitsFast(), and ProcessHitsRoot().

Float_t PndMdt::fTime
private

Definition at line 75 of file PndMdt.h.

Referenced by ProcessHitsFast(), ProcessHitsRoot(), and ResetParameters().

Int_t PndMdt::fTrkIn
private

Definition at line 73 of file PndMdt.h.

Referenced by ProcessHitsFast(), and ProcessHitsRoot().

Bool_t PndMdt::fVerboseLevel
private

Definition at line 80 of file PndMdt.h.

Referenced by EndOfEvent(), ProcessHitsRoot(), and SetVerbosity().

bool PndMdt::mdtCoil
private

Definition at line 83 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetMdtCoil().

bool PndMdt::mdtMagnet
private

Definition at line 82 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetMdtMagnet().

bool PndMdt::mdtMFI
private

Definition at line 84 of file PndMdt.h.

Referenced by ConstructGeometry(), and SetMdtMFIron().


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