FairRoot/PandaRoot
PndPhoGunShort.cxx
Go to the documentation of this file.
1 
2 // -------------------------------------------------------------------------
3 // ----- PndPhoGunShort source file -----
4 // ----- Created 12/10/10 by Maria Patsyuk -----
5 // ----- -----
6 // ----- -----
7 // -------------------------------------------------------------------------
8 #include <fstream>
9 #include <iostream>
10 #include "stdio.h"
11 
12 #include "PndGeoDrc.h"
13 #include "PndPhoGunShort.h"
14 #include "FairRootManager.h"
15 #include "PndMCTrack.h"
16 #include "TVector3.h"
17 
18 #include "FairRunAna.h"
19 #include "FairRuntimeDb.h"
20 #include "FairBaseParSet.h"
21 #include "FairGeoVolume.h"
22 #include "TString.h"
23 #include "FairGeoTransform.h"
24 #include "FairGeoVector.h"
25 #include "FairGeoMedium.h"
26 #include "FairGeoNode.h"
27 #include "PndGeoDrcPar.h"
28 #include "TMath.h"
29 #include "TParticlePDG.h"
30 #include "TDatabasePDG.h"
31 #include "TPDGCode.h"
32 #include "TGeoManager.h"
33 #include "TFile.h"
34 #include "TExec.h"
35 
36 using std::endl;
37 using std::cout;
38 
39 // ----- Default constructor -------------------------------------------
41 :FairTask("PndPhoGunShort")
42 {
43  fGeo = new PndGeoDrc();
44  fGeoH=NULL;
45 
46 }
47 // ----- Standard constructor with verbosity level -------------------------------------------
48 
50  :FairTask("PndPhoGunShort")
51 {
52  fVerbose = verbose;
53  fGeo = new PndGeoDrc();
54  fGeoH=NULL;
55 }
56 // ----- Destructor ----------------------------------------------------
58 {
59  if (fGeo) delete fGeo;
60  if (fGeoH) delete fGeoH;
61  fHistoList->Delete();
62  delete fHistoList;
63 }
64 
65 // ----- Initialization -----------------------------------------------
67 {
68  cout << " ---------- INITIALIZATION ------------" << endl;
69  nevents = 0;
70  // Get RootManager
71  FairRootManager* ioman = FairRootManager::Instance();
72  if ( ! ioman ) {
73  cout << "-E- PndPhoGunShort::Init: "
74  << "RootManager not instantiated!" << endl;
75  return kFATAL;
76  }
77 
78  // Get input array
79  fMCArray = (TClonesArray*) ioman->GetObject("MCTrack");
80  if ( ! fMCArray ) {
81  cout << "-W- PndPhoGunShort::Init: "
82  << "No MCTrack array!" << endl;
83  return kERROR;
84  }
85  // Get Photon point array
86  fPDPointArray = (TClonesArray*) ioman->GetObject("DrcPDPoint");
87  if ( ! fPDPointArray ) {
88  cout << "-W- PndPhoGunShort::Init: "
89  << "No DrcPDPoint array!" << endl;
90  return kERROR;
91  }
92  // Get input array
93  fPDHitArray = (TClonesArray*) ioman->GetObject("DrcPDHit");
94  if ( ! fPDHitArray ) {
95  cout << "-W- PndPhoGunShort::Init: "
96  << "No DrcPDHit array!" << endl;
97  return kERROR;
98  }
99 
100  fEVPointArray = (TClonesArray*) ioman->GetObject("DrcEVPoint");
101  if ( ! fEVPointArray ) {
102  cout << "-W- PndPhoGunShort::Init: "
103  << "No DrcEVPoint array!" << endl;
104  return kERROR;
105  }
106  fBarPointArray = (TClonesArray*) ioman->GetObject("DrcBarPoint");
107  if ( ! fBarPointArray ) {
108  cout << "-W- PndDrcLogLikeli::Init: "
109  << "No DrcBarPoint array!" << endl;
110  return kERROR;
111  }
112  fDigiArray = (TClonesArray*) ioman->GetObject("DrcDigi");
113  if ( ! fDigiArray ) {
114  cout << "-W- PndPhoGunShortP::Init: " << "No DrcDigi array!" << endl;
115  return kERROR;
116  }
117 
118  // Get parameters:
119  fpi = TMath::Pi();
120  fR = fGeo->radius();
122  fBboxNum = fGeo->BBoxNum();
124  fBarBoxGap = fGeo->BBoxGap();
125  fLength = (180. - 2.*fPipehAngle - fBarBoxGap/fR*(fBboxNum/2. - 1.)/fpi*180.)/(fBboxNum/2.) * fR/ 180.*fpi;
126  fDphi = fGeo->BBoxAngle();//21.65 degrees = 2.*(180. - 2*fPipehAngle)/ fBboxNum; //[degrees]
128 
129  //Double_t EVlen = gGeoManager->GetVolume("DrcEVSensor")->GetShape()->Dz();
130  //fEVlen = fGeo->EVlen();
131 
132  fEVdrop = fGeo->EVdrop();
133  fEVlen =fEVdz;
134  fRBottom = fR - fHThick - fEVdrop + fR*(1.-cos(fDphi/2./180.*fpi))/cos(fDphi/2./180.*fpi);
135  //cout<<"fR = "<<fR<<", fHThick = "<<fHThick<<", fEVdrop = "<<fEVdrop<<", fRBottom = "<<fRBottom<<", dphi = "<<fDphi<<endl;
136 // cout<<"EV depth = "<<fEVlen<<", n mcp = "<<fNmcp<<endl;
137 
138  Rin1 = fR - fHThick - fEVdrop - fGeo->boxGap() - fGeo->boxThick();
139  Rin2 = fR + fHThick + fGeo->EVoffset()+ fGeo->boxGap() + fGeo->boxThick() ;
141 
142  if(fShiftPix){
143  Rin1 = fR - fHThick - fEVdrop - fGeo->boxGap() - fGeo->boxThick()- fPixelSize/2.;
145  cout<<"shifted pixels"<<endl;
146  }
147 
148  Ang_pipe = 180. - 2.*fPipehAngle;
149  fNoDD=0;
150  fNoU0=0;fNoU1=0;fNoU2=0;fNoU3=0;
151  fNoB=0;
152  fNoBU0=0;fNoBU1=0;fNoBU2=0;
153  fNoUB=0;
154  fNoUU0=0;fNoUU1=0;fNoUU2=0;fNoUU3=0;
156  fNoBUU0=0;fNoBUU1=0;fNoBUU2=0;
157  fNoUBU=0;
158  fNoBUB=0;
159  fNoTotal=0;
160  fNweirdPhotons = 0;
161 
162  fFile = TFile::Open(fOutputName,"RECREATE");
163  fTree = new TTree("dircsim","Look-up table for DIRC");
164  for(Int_t iLut=0; iLut<5; iLut++){
165  fLut[iLut] = new TClonesArray("PndDrcLutNode");
166  fTree->Branch(Form("LUT%d",iLut),&fLut[iLut],256000,0);
167  }
168 
169 
170  InitLut();
171 
172  if ( fGeoH == NULL ) fGeoH = PndGeoHandling::Instance();
174 
175  //fGeoH->GetGeoManager();
176  //const Double_t *truuu = gGeoManager->GetVolume("DrcEVSensor")->GetShape()->GetTransform()->GetTranslation();
177  //fLowZ = truuu[2]-fGeo->EVlen();
178  //cout<<"posZ = "<<fLowZ<<endl;
179 
180  cout << "-I- PndPhoGunShort: Intialization successfull" << endl;
181  return kSUCCESS;
182 }
183 
184 // ----- Execution of Task ---------------------------------------------
185 void PndPhoGunShort::Exec(Option_t*ion)
186 {
187  nevents++;
188 
190 
191  fDetectorID = 0;
192  /*if(nevents%1000==0)*/ cout<<"Event # "<<nevents<<endl;
194 }
195 
196 //--------------Process Photon Hits----------------------------------------------------
198 {
199  Int_t EVEntry;
200  Int_t SelectionName=0;
201  Int_t PhiSec=0;
202  fmatrixdata.Set(9);
203  fmatrixdata.Reset(0);
204 
205  // Loop over PndDrcPDHits
206  for(Int_t k=0; k<fPDHitArray->GetEntriesFast(); k++) {
207 
208  pdhit = (PndDrcPDHit*)fPDHitArray->At(k);
209 
210  Int_t mcPDRef= pdhit->GetRefIndex();
211  fDigi = (PndDrcDigi*) fDigiArray->At(mcPDRef);
212  Int_t pointID= fDigi->GetIndex(0);
213  Ppt = (PndDrcPDPoint*)fPDPointArray->At(pointID);
214 
215  Int_t trID= Ppt->GetTrackID();
216  tr = (PndMCTrack*)fMCArray->At(trID);
217 
218  EVpt = (PndDrcEVPoint*)fEVPointArray->At(mcPDRef);
219 
220  if(trID!=EVpt->GetTrackID())cout<<"different track IDs"<<endl;
221  EVEntry = fEVPointArray->GetEntriesFast();
222  if(trID!=EVpt->GetTrackID())continue;
224 // fBarId = fBarPoint->GetDetectorID();
225  fBarId = fBarPoint->GetBarId();
226 
227  // production point of the photon
229 
230  // find PHIrot to get to the bar coord. syst:
232 
233  // check if the last of the EV points is on the PD plane as the reflection was in the grease layer/window/photocathode, then exclude this point
234  if(((PndDrcEVPoint*)fEVPointArray->At(EVEntry-1))->GetZ() < ((PndDrcEVPoint*)fEVPointArray->At(0))->GetZ()-fEVlen+0.01){EVEntry = EVEntry - 1;}
235  //check if there are EVpoints on the PD plane and these points are not the last in the array, then reject the photon
236  Bool_t wePho = kFALSE;
237  for(Int_t k2 = 1; k2 < fEVPointArray->GetEntriesFast()-1; k2++){
238  if((((PndDrcEVPoint*)fEVPointArray->At(k2))->GetZ()) < ((PndDrcEVPoint*)fEVPointArray->At(0))->GetZ()-fEVlen+0.01){
239  //cout<<"this is a weird photon - has EV points at the PD plane!!!"<<endl;
240  fNweirdPhotons += 1;
241  wePho = kTRUE;
242  }
243  }
244  if(wePho == kTRUE)continue;
245 
246  if(EVEntry>4){
247  fNweirdPhotons += 1;
248  continue;
249  }
250  ReflName="";
251  if(EVEntry==1)ReflName="DD";
252  fZin = ((PndDrcEVPoint*)fEVPointArray->At(0))->GetZ();
253  if(EVEntry>1){
254  for(Int_t k1 = 1; k1 < EVEntry; k1++){
255  Int_t EVS=0;
256  EVt = (PndDrcEVPoint*)fEVPointArray->At(k1);
257  fEVSec.SetXYZ(EVt->GetX(),EVt->GetY(),EVt->GetZ());
259  fPhiRotEV=fPhiRotEV*180./fpi;
260  fEVPhi=fEVSec.Phi()*180./fpi;
261  //cout<<"EV phi = "<<fEVPhi<<", fPhiRot = "<<fPhiRot<<", fDphi = "<<fDphi<<endl;
262  PhiSec = TMath::Nint(fabs(fEVPhi-fPhiRot*180./fpi)/fDphi);
263  if(fEVPhi<0.){
264  fEVPhi=360.+fEVPhi;
265  PhiSec = TMath::Nint(fabs(fEVPhi-fPhiRot*180./fpi-360.)/fDphi);
266  }
267  //cout<<"phi sec = "<<PhiSec<<endl;
268  FindReflectionType (EVt->GetX(),EVt->GetY(),EVt->GetZ(),ReflectionType);
269  ReflName.Append(ReflectionType);
270  }
271  if(EVEntry==2)ReflName.Append("1");
272  if(EVEntry==3)ReflName.Append("2");
273  if(EVEntry==4)ReflName.Append("3");
274  if(EVEntry==5)ReflName.Append("4");
275  if(EVEntry>=6)ReflName.Append("XX");
276  ReflName.Prepend(Form("%d",PhiSec));
277  }
278  // 24 ambiguities in total:
279  if(ReflName == "DD"){fNoDD +=1;SelectionName=1;ambiguity =1;}
280  if(ReflName == "0B1"){fNoB +=1;SelectionName=1;ambiguity =2;}
281  if(ReflName == "0U1"){fNoU0 +=1;SelectionName=1;ambiguity =3;}
282  if(ReflName == "1U1"){fNoU1 +=1;SelectionName=1;ambiguity =4;}
283  if(ReflName == "2U1"){fNoU2 +=1;SelectionName=1;ambiguity =5;}
284  if(ReflName == "3U1"){fNoU3 +=1;SelectionName=1;ambiguity =6;}
285  if(ReflName == "0BU2"){fNoBU0 +=1;SelectionName=1;ambiguity =7;}
286  if(ReflName == "1BU2"){fNoBU1 +=1;SelectionName=1;ambiguity =8;}
287  if(ReflName == "2BU2"){fNoBU2 +=1;SelectionName=1;ambiguity =9;}
288  if(ReflName == "0UB2"){fNoUB +=1; SelectionName=1;ambiguity =10;}
289  if(ReflName == "0UU2"){fNoUU0 +=1; SelectionName=1;ambiguity =11;}
290  if(ReflName == "1UU2"){fNoUU1 +=1;SelectionName=1;ambiguity =12;}
291  if(ReflName == "2UU2"){fNoUU2 +=1;SelectionName=1;ambiguity =13;}
292  if(ReflName == "3UU2"){fNoUU3 +=1; SelectionName=1;ambiguity =14;}
293  if(ReflName == "0UUU3"){fNoUUU0 +=1; SelectionName=1;ambiguity =15;}
294  if(ReflName == "1UUU3"){fNoUUU1 +=1; SelectionName=1;ambiguity =16;}
295  if(ReflName == "2UUU3"){fNoUUU2 +=1; SelectionName=1;ambiguity =17;}
296  if(ReflName == "3UUU3"){fNoUUU3 +=1; SelectionName=1;ambiguity =18;}
297  if(ReflName == "4UUU3"){fNoUUU4 +=1; SelectionName=1;ambiguity =19;}
298  if(ReflName == "0BUU3"){fNoBUU0 +=1; SelectionName=1;ambiguity =20;}
299  if(ReflName == "1BUU3"){fNoBUU1 +=1; SelectionName=1;ambiguity =21;}
300  if(ReflName == "2BUU3"){fNoBUU2 +=1; SelectionName=1;ambiguity =22;}
301  if(ReflName == "BUB3"){fNoBUB +=1; SelectionName=1;ambiguity =23;}
302  if(ReflName == "UBU3"){fNoUBU +=1; SelectionName=1;ambiguity =24;}
303  if(ReflName == ""){ambiguity =-99;}
304 
305  if(SelectionName==0.){continue;}
306 
308 // fPixIndex = pdhit->GetDetectorID();
309  ftime = Ppt->GetTime();//pdhit->GetTime();
310 
311  // Photon initial momentum in the bar coord. syst.
312  fPphoInit = tr->GetMomentum();
313  //fPphoB = (fGeoH->MasterToLocalShortId(fPphoInit, fBarId) - fGeoH->MasterToLocalShortId((0.,0.,0.),fBarId)).Unit();
314  // fPphoB.Print();
315  // Photon initial momentum in the bar coord. syst.
316  fPphoB = (tr->GetMomentum()).Unit();
317  fPphoB.RotateZ(-fPhiRot);
318 // fkxBar = -fPphoB.Y();
319 // fkyBar = fPphoB.X();
320 // fkzBar = fPphoB.Z();
321  fkxBar = fPphoB.X();
322  fkyBar = fPphoB.Y();
323  fkzBar = fPphoB.Z();
324  fPphoB.SetXYZ(fkxBar,fkyBar,fkzBar);
325 
327 // ((PndDrcLutNodeH*)(fLut->At(fPixIndex)))->AddEntry(fPphoB,ambiguity,ftime);
328 // ((PndDrcLutNodeH*)(fLut->At(fPixIndex)))->SetPos(pdhit->GetPosition());
329 
330 
331 // Double_t rrr = sqrt(pow(pdhit->GetX(),2) + pow(pdhit->GetY(),2));
332 
333  //if(ambiguity>2){
334 // cout<<"pix "<<fPixIndex<<", reflection type = "<<ReflName<<", ambiguity = "<<ambiguity<<", kx = "<<fkxBar<<", R = "<<rrr<<endl;
335  //}
336 
337  fNoTotal +=1;
338 
339  }// photon hits
340 }
341 
342 //----------------------------------------------------------------------------------------------
344 
345  //cout<<"fPhiRotEV = "<<fPhiRotEV<< ", fDphi = "<<fDphi<<", Ang_pipe = "<<Ang_pipe<<endl;
346 
347  PlanB[0]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV-fDphi/2.)*fpi/180.);
348  PlanB[1]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV-fDphi/2.)*fpi/180.);
349  PlanB[2]=fZin;//-119.6015;//fGeo->barBoxZUp()-0.30075;
350  PlanB[3]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV-fDphi/2.)*fpi/180.);
351  PlanB[4]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV-fDphi/2.)*fpi/180.);
352  PlanB[5]=fZin-fEVlen;//-149.6015;//fGeo->barBoxZUp()-fGeo->EVlen()-0.30075;
353  PlanB[6]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV+fDphi/2.)*fpi/180.);
354  PlanB[7]=(Rin1/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV+fDphi/2.)*fpi/180.);
355  PlanB[8]=fZin-fEVlen;//-149.6015;//fGeo->barBoxZUp()-fGeo->EVlen()-0.30075;
356 
357  PlanU[0]=(Rin2/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV-fDphi/2.)*fpi/180.);
358  PlanU[1]=(Rin2/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV-fDphi/2.)*fpi/180.);
359  PlanU[2]=fZin;//-119.6015;//fGeo->barBoxZUp()-0.30075;
360  PlanU[3]=(Rout1/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV-fDphi/2.)*fpi/180.);
361  PlanU[4]=(Rout1/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV-fDphi/2.)*fpi/180.);
362  PlanU[5]=fZin-fEVlen;//-149.6015;//fGeo->barBoxZUp()-fGeo->EVlen()-0.30075;
363  PlanU[6]=(Rout1/cos((Ang_pipe/16.)*fpi/180.))*cos((fPhiRotEV+fDphi/2.)*fpi/180.);
364  PlanU[7]=(Rout1/cos((Ang_pipe/16.)*fpi/180.))*sin((fPhiRotEV+fDphi/2.)*fpi/180.);
365  PlanU[8]=fZin-fEVlen;//-149.6015;//fGeo->barBoxZUp()-fGeo->EVlen()-0.30075;
366 
367 //cout<<Rin1<<" "<<Rin2<<" "<<Rout1<<" "<<Rout1/cos((Ang_pipe/16.)*fpi/180.)<<endl;
368  ReflectionType="";
369  TMatrixD matrix1;
370  fmatrixdata[0]=xev-PlanB[0];
371  fmatrixdata[1]=yev-PlanB[1];
372  fmatrixdata[2]=zev-PlanB[2];
373  fmatrixdata[3]=PlanB[3]-PlanB[0];
374  fmatrixdata[4]=PlanB[4]-PlanB[1];
375  fmatrixdata[5]=PlanB[5]-PlanB[2];
376  fmatrixdata[6]=PlanB[6]-PlanB[0];
377  fmatrixdata[7]=PlanB[7]-PlanB[1];
378  fmatrixdata[8]=PlanB[8]-PlanB[2];
379  matrix1.Use(3,3,fmatrixdata.GetArray());
380  determint1 = matrix1.Determinant();
381 
382  if(determint1 > -0.02 && determint1 < 0.02)ReflectionType="B";
383  fmatrixdata.Reset(0);
384  fmatrixdata[0]=xev-PlanU[0];
385  fmatrixdata[1]=yev-PlanU[1];
386  fmatrixdata[2]=zev-PlanU[2];
387  fmatrixdata[3]=PlanU[3]-PlanU[0];
388  fmatrixdata[4]=PlanU[4]-PlanU[1];
389  fmatrixdata[5]=PlanU[5]-PlanU[2];
390  fmatrixdata[6]=PlanU[6]-PlanU[0];
391  fmatrixdata[7]=PlanU[7]-PlanU[1];
392  fmatrixdata[8]=PlanU[8]-PlanU[2];
393  matrix1.Use(3,3,fmatrixdata.GetArray());
394  determint2 = matrix1.Determinant();
395  if(determint2 > -0.02 && determint2 < 0.02)ReflectionType="U";
396 
397 
398  //cout<<"determinants: "<<determint1<<", "<<determint2<<endl;
399  //cout<<"rin2 = "<<Rin1<<", rin2 = "<<Rin2<<", rout = "<<Rout1<<endl;
400 }
401 
402 //----------------------------------------------------------------------------------------------
403 Double_t PndPhoGunShort::InBarCoordSyst(TVector3 start, TVector3 *v1, TVector3 *v2, TVector3 *v3, TVector3 *v4){
404 
405  // this function is used with fStartVertex to find the bar from which the photon originated
406 
407  Double_t startPhi = start.Phi()/fpi*180.; // [degrees]
408  //cout<<"-I- InBarCoordinateSystem: start phi = "<<startPhi<<endl;
409  //cout<<"-I- InBarCoordinateSystem: dphi = "<<Dphi<<endl;
410  Double_t PhiRot = 0.; //[degrees]
411  if(startPhi < 0.){startPhi = 360. + startPhi;}
412  if(startPhi > 0. && startPhi < 90.){
413  PhiRot = TMath::Floor(startPhi/fDphi) *fDphi + fDphi/2.;
414  }
415  if(startPhi > 90. && startPhi < 270.){
416  PhiRot = 90. + fPipehAngle + TMath::Floor((startPhi-90.-fPipehAngle)/fDphi) *fDphi + fDphi/2.;
417  }
418  if(startPhi > 270. && startPhi < 360.){
419  PhiRot = 270. + fPipehAngle + TMath::Floor((startPhi-270.-fPipehAngle)/fDphi) *fDphi + fDphi/2.;
420  }
421  //cout<<"-I- InBarCoordinateSystem: PhiRot = "<<PhiRot<<endl;
422 
423  // create initial barbox:
424 
425  TVector3 ver1, ver2, ver3, ver4;
426  ver1.SetXYZ(fR-fHThick, fLength/2. ,0.);
427  ver2.SetXYZ(fR+fHThick, fLength/2. ,0.);
428  ver3.SetXYZ(fR+fHThick, -fLength/2. ,0.);
429  ver4.SetXYZ(fR-fHThick, -fLength/2. ,0.);
430 
431  ver1.RotateZ(PhiRot/180.*fpi);
432  ver2.RotateZ(PhiRot/180.*fpi);
433  ver3.RotateZ(PhiRot/180.*fpi);
434  ver4.RotateZ(PhiRot/180.*fpi);
435 
436  *v1 = ver1;
437  *v2 = ver2;
438  *v3 = ver3;
439  *v4 = ver4;
440 
441  return PhiRot/180.*fpi;
442 }
443 //--------------------------------------------------------------------------------------------
445 {
446  Int_t Nnodes = 30000;
447  for(Int_t iLut=0; iLut<5; iLut++){
448  TClonesArray &fLuta = *fLut[iLut];
449  for (Long64_t n=0; n<Nnodes; n++) {
450  new((fLuta)[n]) PndDrcLutNode(-1);
451  }
452  }
453 }
454 
455 // ----- Finish Task ---------------------------------------------------
457 {
458  fTree->Fill();
459  fTree->Write();
460  fFile->Write();
461 
462  for(Int_t iLut=0; iLut<5; iLut++){
463  fLut[iLut]->Clear();
464  }
465  cout << "-I- PndDrcLutFill: Finish" << endl;
466 }
467 
468 // -------------------------------------------------------------------------
PndMCTrack * tr
Double_t fPipehAngle
TClonesArray * fBarPointArray
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
virtual ~PndPhoGunShort()
Double_t PlanB[9]
TClonesArray * fMCArray
Double_t fBarBoxGap
virtual InitStatus Init()
Double_t BBoxNum()
Definition: PndGeoDrc.h:136
Double_t fNweirdPhotons
Int_t GetBarId() const
#define verbose
TVector3 fPphoInit
virtual void SetParContainers()
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
int n
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
TClonesArray * fPDPointArray
TClonesArray * fLut[5]
Double_t BBoxGap()
Definition: PndGeoDrc.h:130
Double_t EVdrop()
Definition: PndGeoDrc.h:142
Double_t boxGap()
Definition: PndGeoDrc.h:116
PndGeoDrc * fGeo
Basic geometry data of barrel DRC.
Double_t determint2
TString ReflectionType
Double_t EVoffset()
Definition: PndGeoDrc.h:145
TList * fHistoList
Double_t PipehAngle()
Definition: PndGeoDrc.h:139
TClonesArray * fPDHitArray
Double_t fPixIndex
Double_t determint1
Int_t GetBarPointID() const
Definition: PndDrcPDPoint.h:56
virtual Int_t GetRefIndex()
Definition: PndDrcPDHit.h:57
PndGeoHandling * fGeoH
PndDrcPDPoint * Ppt
Double_t InBarCoordSyst(TVector3, TVector3 *, TVector3 *, TVector3 *, TVector3 *)
Double_t
Double_t McpActiveArea()
Definition: PndGeoDrc.h:166
Double_t McpSize()
Definition: PndGeoDrc.h:163
Double_t BBoxAngle()
Definition: PndGeoDrc.h:133
PndDrcEVPoint * EVt
TClonesArray * fDigiArray
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t boxThick()
Definition: PndGeoDrc.h:120
static PndGeoHandling * Instance()
TVector3 GetPosition() const
Definition: PndDrcPDHit.h:58
Double_t PlanU[9]
PndDrcEVPoint * EVpt
TClonesArray * fEVPointArray
void SetVerbose(Int_t v)
Double_t fPhiRotEV
Double_t barHalfThick()
Definition: PndGeoDrc.h:96
virtual void Finish()
PndDrcPDHit * pdhit
TVector3 v1
Definition: bump_analys.C:40
Int_t GetSensorId() const
Definition: PndDrcDigi.h:91
PndDrcDigi * fDigi
TVector3 fStartVertex
ClassImp(PndAnaContFact)
TVector3 v2
Definition: bump_analys.C:40
TVector3 GetStartVertex() const
Definition: PndMCTrack.h:76
Double_t Pi
Int_t GetDetectorId() const
Definition: PndDrcDigi.h:90
cout<<"the Event No is "<< i<< endl;{{if(hit_array->GetEntriesFast()!=mc_array->GetEntriesFast()) continue;PndSdsHit *hit=(PndSdsHit *) hit_array-> At(j)
Definition: anaLmdCluster.C:71
Double_t McpGap()
Definition: PndGeoDrc.h:169
int Nint(float x)
Definition: PndCAMath.h:117
Double_t FindReflectionType(Double_t, Double_t, Double_t, TString)
Int_t GetIndex(int i=0) const
Definition: PndDrcDigi.h:94
Double_t PixelSize()
Definition: PndGeoDrc.h:175
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
Double_t radius()
Definition: PndGeoDrc.h:92
Double_t fPixelSize
virtual void Exec(Option_t *option)