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

#include <PndDrcReco.h>

Inheritance diagram for PndDrcReco:

Public Member Functions

 PndDrcReco ()
 
 PndDrcReco (TString outFile, TString lutFile, TString pdfFile, Int_t verbose=0, Double_t r1=0, Double_t r2=0)
 
virtual ~PndDrcReco ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *option)
 
virtual void Finish ()
 

Private Member Functions

void DetermineCherenkov (Int_t boxId, Int_t barId)
 
void DetermineBarId (Double_t &boxPhi, Int_t &barId)
 
void LookUpTable (Int_t barId, Int_t sensorId)
 
void TimeImaging (Int_t sensorId)
 
Double_t FindPeak ()
 
Int_t FindPdg (Double_t mom, Double_t cangle)
 
void CanvasAdd (TString name="c", Int_t w=800, Int_t h=400)
 
void CanvasSave (TString path="data/reco")
 
void SetDefaultParameters ()
 

Private Attributes

PndGeoDrcfGeo
 
Double_t fBboxNum
 
Double_t fPipehAngle
 
Double_t fDphi
 
Double_t fBarPhi
 
TClonesArray * fMCArray
 
TClonesArray * fBarPointArray
 
TClonesArray * fEVPointArray
 
TClonesArray * fPDPointArray
 
TClonesArray * fDigiArray
 
TClonesArray * fPDHitArray
 
TClonesArray * fLut [5]
 
TClonesArray * fDrcTrackInfoArray
 
TFile * fFile
 
TFile * fFileOut
 
TTree * fTree
 
TTree * fTreeOut
 
PndMCTrackfMCTrack
 
PndDrcBarPointfBarPoint
 
PndDrcEVPointfEVPoint
 
PndDrcPDPointfPDPoint
 
PndDrcDigifDigi
 
PndDrcPDHitfPDHit
 
Int_t fVerbose
 
Int_t nevents
 
TString fOutFile
 
TString fLutFile
 
TString fPdfFile
 
Int_t fEvType
 
Int_t fRadType
 
Int_t fLensType
 
TH1F * fHist
 
TH1F * fHist1
 
TH1F * fHist2
 
TF1 * fFit
 
TSpectrum * fSpect
 
Int_t fMethod
 
Int_t fParticleArray [3000]
 
TVector3 fMomInBar
 
TVector3 fPosInBar
 
Double_t fTimeInBar
 
Double_t fTimeHit
 
Double_t fLenz
 
Double_t fCriticalAngle
 
Bool_t fReflected
 
Double_t fPdg [5]
 
Double_t fMass [5]
 
Double_t fAngle [5]
 
TF1 * fFunc [5]
 
TF1 * fFnph [5]
 
TF1 * fhNphArr [5][40][150]
 
Double_t fLk1 [5]
 
Double_t fLk2 [5]
 
Double_t fDiffLn1
 
Double_t fDiffLn2
 
TH1F * fhLk1 [5]
 
TH1F * fhLk2 [5]
 
TH1F * fhTang [5]
 
TH1F * fhTime [5]
 
TH1F * fhDiff [5]
 
TH1F * fhNph [5]
 
TH1F * fhPdf [5][40][120][1100]
 
Double_t fMom
 
Double_t fTheta
 
Double_t fPhi
 
Double_t fSpr [5]
 
Double_t fNph [5]
 
Double_t fCangle [5]
 
Double_t fLikelihood [2]
 
Double_t fSeparation [2]
 
Double_t fEfficiency [5]
 
Double_t fMissId [5]
 
Int_t fMcTrackId
 
Int_t fPidTrue
 
Int_t fPidDist
 
Int_t fPidLike [2]
 
Int_t fEvents [5]
 
Int_t fEventsEff [5]
 
Int_t fEventsMis [5]
 
Int_t fHits [5]
 
Int_t fHitsE [5]
 
TVector3 fNx
 
TVector3 fNy
 
Double_t fR1
 
Double_t fR2
 
TRandom fRandom
 
TList * fCanvasList
 
Double_t c_spr [5][50][150]
 
Double_t c_mean [5][50][150]
 

Detailed Description

Definition at line 37 of file PndDrcReco.h.

Constructor & Destructor Documentation

PndDrcReco::PndDrcReco ( )

Definition at line 29 of file PndDrcReco.cxx.

29  : FairTask("PndDrcReco"){
30 }
PndDrcReco::PndDrcReco ( TString  outFile,
TString  lutFile,
TString  pdfFile,
Int_t  verbose = 0,
Double_t  r1 = 0,
Double_t  r2 = 0 
)

Definition at line 32 of file PndDrcReco.cxx.

References fR1, fR2, r1, and r2.

33  :FairTask("PndDrcReco",verbose),fVerbose(verbose),fOutFile(outFile),fLutFile(lutFile),fPdfFile(pdfFile){
34  fR1=r1;
35  fR2=r2;
36 }
Int_t fVerbose
Definition: PndDrcReco.h:93
Double_t fR1
Definition: PndDrcReco.h:127
TString outFile
Definition: hit_dirc.C:17
#define verbose
double r1
TString fLutFile
Definition: PndDrcReco.h:96
TString fPdfFile
Definition: PndDrcReco.h:97
TString fOutFile
Definition: PndDrcReco.h:95
Double_t fR2
Definition: PndDrcReco.h:127
double r2
virtual PndDrcReco::~PndDrcReco ( )
inlinevirtual

Definition at line 44 of file PndDrcReco.h.

44 {};

Member Function Documentation

void PndDrcReco::CanvasAdd ( TString  name = "c",
Int_t  w = 800,
Int_t  h = 400 
)
private

Definition at line 593 of file PndDrcReco.cxx.

References fCanvasList.

Referenced by Finish().

593  {
594  fCanvasList->Add(new TCanvas(name,name,0,0,w,h));
595 }
TString name
TList * fCanvasList
Definition: PndDrcReco.h:130
void PndDrcReco::CanvasSave ( TString  path = "data/reco")
private

Definition at line 597 of file PndDrcReco.cxx.

References c, fCanvasList, fOutFile, hh, name, next, TString, and uid().

Referenced by Finish().

597  {
598  gROOT->SetBatch(1);
599  TIter next(fCanvasList);
600  TCanvas *c=0;
601  gSystem->mkdir(path,kTRUE);
602  while((c = (TCanvas*) next())){
603  TString name = c->GetName();
604  TCanvas *cc = new TCanvas(name+"exp","cExport",0,0,800,400);
605  cc = (TCanvas*) c->DrawClone();
606  cc->SetCanvasSize(800,400);
607  cc->SetBottomMargin(0.12);
608  TIter nexth(cc->GetListOfPrimitives());
609  TObject *obj;
610  while((obj = nexth())){
611  if(obj->InheritsFrom("TH1")){
612  TH1F *hh = (TH1F*)obj;
613  hh->GetXaxis()->SetTitleSize(0.06);
614  hh->GetYaxis()->SetTitleSize(0.06);
615 
616  hh->GetXaxis()->SetLabelSize(0.05);
617  hh->GetYaxis()->SetLabelSize(0.05);
618 
619  hh->GetXaxis()->SetTitleOffset(0.85);
620  hh->GetYaxis()->SetTitleOffset(0.85);
621  }
622  }
623  cc->Modified();
624  cc->Update();
625  TString uid("");
626  if(fOutFile.Contains("/")){
627  TString tname = fOutFile;
628  path= tname.Remove(fOutFile.Last('/')) + "/";
629  tname = fOutFile;
630  uid=tname.Remove(0,fOutFile.Last('/')+1);
631  }
632  cc->Print(path+uid+name+".png");
633  }
634  gROOT->SetBatch(0);
635 }
int uid(int lev, int lrun, int lmode)
Definition: autocutx.C:122
TString name
TString fOutFile
Definition: PndDrcReco.h:95
TList * fCanvasList
Definition: PndDrcReco.h:130
TClonesArray * hh
static int next[96]
Definition: ranlxd.cxx:374
void PndDrcReco::DetermineBarId ( Double_t boxPhi,
Int_t &  barId 
)
private

Definition at line 533 of file PndDrcReco.cxx.

References Double_t, fBarPhi, fDphi, fPipehAngle, fPosInBar, fRadType, and Pi.

Referenced by Exec().

533  {
534  Double_t startPhi = fPosInBar.Phi()/TMath::Pi()*180;
535  if(startPhi < 0) startPhi = 360 + startPhi;
536  if(startPhi >= 0 && startPhi < 90) boxPhi = TMath::Floor(startPhi/fDphi) *fDphi + fDphi/2.;
537  if(startPhi >= 90 && startPhi < 270) boxPhi = 90 + fPipehAngle + TMath::Floor((startPhi-90-fPipehAngle)/fDphi) *fDphi + fDphi/2.;
538  if(startPhi >= 270 && startPhi < 360) boxPhi = 270 + fPipehAngle + TMath::Floor((startPhi-270-fPipehAngle)/fDphi) *fDphi + fDphi/2.;
539 
540  if(fRadType==5) barId = (int) (2.5 + (boxPhi-startPhi)/fBarPhi);
541  if(fRadType==4) barId = (int) (2 + (boxPhi-startPhi)/fBarPhi);
542  if(fRadType==3) barId = (int) (1.5 + (boxPhi-startPhi)/fBarPhi);
543  if(fRadType==2) barId = (int) (1 + (boxPhi-startPhi)/fBarPhi);
544  if(fRadType==1) barId = 0;
545  if(barId>4 || barId<0){
546  std::cout<<"Error in PndDrcReco: Bar Id is wrong. barId = "<< barId <<std::endl;
547  barId = -1;
548  }
549 }
Double_t fPipehAngle
Definition: PndDrcReco.h:66
Double_t fDphi
Definition: PndDrcReco.h:66
TVector3 fPosInBar
Definition: PndDrcReco.h:105
Double_t
Int_t fRadType
Definition: PndDrcReco.h:98
Double_t fBarPhi
Definition: PndDrcReco.h:66
Double_t Pi
void PndDrcReco::DetermineCherenkov ( Int_t  boxId,
Int_t  barId 
)
private

Definition at line 314 of file PndDrcReco.cxx.

References acos(), c, c_spr, fAngle, fBarPoint, fBarPointArray, fEvents, fEventsEff, fEventsMis, fEVPoint, fEVPointArray, fFunc, fHist, fHits, fHitsE, fhLk1, fhLk2, fhNph, fLikelihood, fLk1, fLk2, fMass, fMCArray, fMCTrack, fMcTrackId, fMethod, fMom, fParticleArray, fPDHit, fPDHitArray, fPDPoint, fPDPointArray, fPidTrue, fTheta, fTimeHit, fTimeInBar, PndDrcPDPoint::GetBarPointID(), PndMCTrack::GetMomentum(), PndMCTrack::GetMotherID(), PndDrcEVPoint::GetNormal(), PndDrcPDHit::GetSensorId(), PndDrcPDHit::GetTime(), gg_pathid, h, hEnergy, i, LookUpTable(), pid(), sqrt(), TimeImaging(), and vec.

Referenced by Exec().

314  { // boxId //[R.K.03/2017] unused variable(s)
315 
316  for(Int_t i=0; i<5; i++) {
317  fLk1[i]=0;
318  fLk2[i]=0;
319  fHitsE[i]=0;
320  fAngle[i] = acos(sqrt(fMom*fMom + fMass[i]*fMass[i])/fMom/1.473) + 0.00; //1.4738 = 370 = 3.35
321  fFunc[i]->SetParameter(1,fAngle[i]);
322  Int_t momid=fMom*10+0.5;
323  Int_t thetaid=fTheta+0.5;
324  //fFnph[i]=fhNphArr[i][momid][thetaid];
325 
326  // std::cout<< momid<<" "<<thetaid <<" "<< c_spr[2][momid][thetaid] <<" "<<c_spr[3][momid][thetaid] <<std::endl;
327 
328  if(c_spr[i][momid][thetaid]>0.003 && c_spr[i][momid][thetaid] < 0.1) fFunc[i]->SetParameter(2,c_spr[i][momid][thetaid]);
329  }
330 
331  //ggg=fRandom.Gaus(0,0.003);
332  for(Int_t h=0; h<fPDHitArray->GetEntriesFast(); h++) {
333  fPDHit = (PndDrcPDHit*)fPDHitArray->At(h);
334 
335  Int_t sensorId = fPDHit->GetSensorId();
337 
338  Int_t pointID = fPDHit->GetLink(1).GetIndex();
339  //Int_t eventID = fPDHit->GetLink(1).GetEntry(); //[R.K. 01/2017] unused variable?
340 
341  fPDPoint = (PndDrcPDPoint*)fPDPointArray->At(pointID);
343 
344  if(fPDPoint->GetTrackID()<1) continue;
345  fMCTrack =(PndMCTrack*)fMCArray->At(fPDPoint->GetTrackID());
346  if(fMcTrackId!=fMCTrack->GetMotherID()) continue;
347 
348  //Double_t en = 1.2398/(fMCTrack->GetMomentum().Mag()*1E6); //[R.K. 01/2017] unused variable?
349  hEnergy->Fill(fMCTrack->GetMomentum().Mag()*1E9);
350 
351  //if(fBarPoint->GetBoxId() != boxId || fBarPoint->GetBarId() != barId) continue;
352 
353  Int_t nev=0;
354  TVector3 vec;
355  gg_pathid=0;
356  for(int i=0; i<fEVPointArray->GetEntriesFast(); i++){
358  if(fPDPoint->GetTrackID() == fEVPoint->GetTrackID()){
359  nev++;
360  vec = fEVPoint->GetNormal();
361  gg_pathid += (vec.X()+vec.Y()*10 + vec.Z()*100)*1000*nev;
362  }
363  }
364 
365  if(fMethod==0 || fMethod==5) LookUpTable(barId,sensorId);
366  if(fMethod==1 || fMethod==5) TimeImaging(sensorId);
367  }
368 
369  Int_t pid=fParticleArray[fPidTrue];
370 
371  // std::cout<<"HHHHHHHHHH "<<fLk1[2];
372  // fLk1[2]+=fHitsE[pid]*TMath::Log(fFnph[2]->Eval(fHitsE[pid]));
373  // fLk1[3]+=fHitsE[pid]*TMath::Log(fFnph[3]->Eval(fHitsE[pid]));
374  // std::cout<<" --- "<<fLk1[2] <<std::endl;
375 
376  fLikelihood[0] = fLk1[3]-fLk1[2];
377  fLikelihood[1] = fLk2[3]-fLk2[2];
378 
379  if(fMethod==0 || fMethod==5) {
380  fhLk1[pid]->Fill(fLikelihood[0]);
381  fHits[pid]+=fHitsE[pid];
382  fhNph[pid]->Fill(fHitsE[pid]);
383  std::cout<<"method 0 LK = "<< fLikelihood[0] <<std::endl;
384  }
385  if(fMethod==1 || fMethod==5){
386  fhLk2[pid]->Fill(fLikelihood[1]);
387  fHits[pid]+= fPDHitArray->GetEntriesFast();
388  fhNph[pid]->Fill(fPDHitArray->GetEntriesFast());
389  std::cout<<"method 1 LK = "<< fLikelihood[1] << " "<< fPidTrue<<std::endl;
390  }
391 
392  if(fLikelihood[0]>0) {
393  if(fPidTrue==321) fEventsEff[3]++;
394  else fEventsMis[3]++;
395  }else{
396  if(fPidTrue==211) fEventsEff[2]++;
397  else fEventsMis[2]++;
398  }
399  fEvents[pid]++;
400 
401  if(false){// && fLk1[2] > fLk1[3]){
402  TCanvas* c = new TCanvas("c","c",0,0,800,600);
403  fHist->Scale(1/fHist->GetMaximum());
404  fHist->SetTitle(Form("%d",fPidTrue));
405  fHist->Draw();
406 
407  fFunc[2]->SetLineColor(kBlue);
408  fFunc[2]->Draw("same");
409  fFunc[3]->SetLineColor(kRed);
410  fFunc[3]->Draw("same");
411 
412  TLine *line = new TLine(0,0,0,1000);
413  line->SetX1(fAngle[2]);
414  line->SetX2(fAngle[2]);
415  line->SetY1(gPad->GetUymin());
416  line->SetY2(fHist->GetMaximum()*1.05);
417  line->SetLineColor(kBlue);
418  line->Draw();
419 
420  TLine *line1 = new TLine(0,0,0,1000);
421  line1->SetX1(fAngle[3]);
422  line1->SetX2(fAngle[3]);
423  line1->SetY1(gPad->GetUymin());
424  line1->SetY2(fHist->GetMaximum()*1.05);
425  line1->SetLineColor(kRed);
426  line1->Draw();
427 
428  c->Modified();
429  c->Update();
430  c->WaitPrimitive();
431  }
432 
433  fHist->Reset();
434 }
Int_t fMethod
Definition: PndDrcReco.h:103
friend F32vec4 acos(const F32vec4 &a)
Definition: P4_F32vec4.h:113
PndDrcEVPoint * fEVPoint
Definition: PndDrcReco.h:84
PndDrcBarPoint * fBarPoint
Definition: PndDrcReco.h:83
TH1F * fhNph[5]
Definition: PndDrcReco.h:119
PndDrcPDPoint * fPDPoint
Definition: PndDrcReco.h:85
Double_t c_spr[5][50][150]
Definition: PndDrcReco.h:132
TClonesArray * fPDHitArray
Definition: PndDrcReco.h:73
Int_t gg_pathid
Definition: PndDrcReco.cxx:313
Int_t i
Definition: run_full.C:25
Int_t GetSensorId()
Definition: PndDrcPDHit.h:59
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
TF1 * fFunc[5]
Definition: PndDrcReco.h:114
int pid()
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
Int_t fHitsE[5]
Definition: PndDrcReco.h:125
Double_t fMom
Definition: PndDrcReco.h:122
TClonesArray * fBarPointArray
Definition: PndDrcReco.h:69
Int_t fParticleArray[3000]
Definition: PndDrcReco.h:103
Int_t fEventsMis[5]
Definition: PndDrcReco.h:125
virtual Double_t GetTime()
Definition: PndDrcPDHit.h:55
Int_t GetBarPointID() const
Definition: PndDrcPDPoint.h:56
TClonesArray * fMCArray
Definition: PndDrcReco.h:68
Double_t fTimeInBar
Definition: PndDrcReco.h:106
TH1F * fhLk1[5]
Definition: PndDrcReco.h:119
Double_t fLk2[5]
Definition: PndDrcReco.h:117
void LookUpTable(Int_t barId, Int_t sensorId)
Definition: PndDrcReco.cxx:436
Double_t fLikelihood[2]
Definition: PndDrcReco.h:122
Double_t fTimeHit
Definition: PndDrcReco.h:107
PndMCTrack * fMCTrack
Definition: PndDrcReco.h:82
TVector3 GetNormal()
Definition: PndDrcEVPoint.h:49
TH1F * fhLk2[5]
Definition: PndDrcReco.h:119
Double_t fLk1[5]
Definition: PndDrcReco.h:116
PndDrcPDHit * fPDHit
Definition: PndDrcReco.h:87
TH1F * hEnergy
Definition: PndDrcReco.cxx:251
TClonesArray * fPDPointArray
Definition: PndDrcReco.h:71
Int_t fHits[5]
Definition: PndDrcReco.h:125
Double_t fMass[5]
Definition: PndDrcReco.h:112
Double_t fAngle[5]
Definition: PndDrcReco.h:113
Int_t fPidTrue
Definition: PndDrcReco.h:124
Int_t GetMotherID() const
Definition: PndMCTrack.h:74
Double_t fTheta
Definition: PndDrcReco.h:122
Int_t fEvents[5]
Definition: PndDrcReco.h:125
TClonesArray * fEVPointArray
Definition: PndDrcReco.h:70
Int_t fMcTrackId
Definition: PndDrcReco.h:124
Int_t fEventsEff[5]
Definition: PndDrcReco.h:125
dble_vec_t vec[12]
Definition: ranlxd.cxx:380
void TimeImaging(Int_t sensorId)
Definition: PndDrcReco.cxx:514
TH1F * fHist
Definition: PndDrcReco.h:99
void PndDrcReco::Exec ( Option_t *  option)
virtual

Definition at line 257 of file PndDrcReco.cxx.

References DetermineBarId(), DetermineCherenkov(), Double_t, fBarPoint, fBarPointArray, fhLk1, fhLk2, fMCArray, fMCTrack, fMcTrackId, fMom, fMomInBar, fPDHitArray, fPhi, fPidTrue, fPosInBar, fRandom, fTheta, fTimeInBar, fVerbose, PndDrcBarPoint::GetBarId(), PndDrcBarPoint::GetBoxId(), PndMCTrack::GetMomentum(), PndMCTrack::GetMotherID(), PndDrcBarPoint::GetPdgCode(), i, nevents, nHits, and Pi.

257  {
258  nevents++;
259 
260  Int_t nHits = fPDHitArray->GetEntriesFast();
261  if(fVerbose>1) std::cout<<"Event # "<< nevents<<" has "<<nHits<<" hits."<< std::endl;
262  else if(fVerbose==1 && nevents%100==0) std::cout<<"Event # "<< nevents<<" has "<<nHits<<" hits."<< std::endl;
263 
264  for(Int_t itrack=0; itrack<fMCArray->GetEntriesFast(); itrack++){
265  fMCTrack = (PndMCTrack*)fMCArray->At(itrack);
266  if( fMCTrack->GetMotherID() != -1) continue;
267  fMcTrackId = itrack;
268 
269  Int_t mcBoxId(-1), barId; //mcBarId, //[R.K.03/2017] unused variable
270  for(int i=0; i<fBarPointArray->GetEntriesFast(); i++){
272  if(itrack == fBarPoint->GetTrackID()){
273  mcBoxId = fBarPoint->GetBoxId();
274  break;
275  }
276  }
277  if(mcBoxId==-1) continue;
278 
279  fBarPoint->Momentum(fMomInBar);
280  fBarPoint->Position(fPosInBar);
281  fTimeInBar = fBarPoint->GetTime();
283  fBarPoint->GetBarId(); //mcBarId = //[R.K.03/2017] unused variable
284 
285  //tracking smearing
286  TVector3 zz = fMomInBar;
287  fMomInBar.SetTheta(fRandom.Gaus(fMomInBar.Theta(),0.002));
288  fMomInBar.Rotate(fRandom.Uniform(2*TMath::Pi()), zz);
289 
290  fMom=fMomInBar.Mag();
291  fTheta=fMCTrack->GetMomentum().Theta()*180/TMath::Pi();
292  //fPhi=fMomInBar.Phi()*180/TMath::Pi();
293  fPhi=fMCTrack->GetMomentum().Phi()*180/TMath::Pi();
294 
295  if(fMom>2.5 && nevents==1 && itrack==0){
296  fhLk1[2] = new TH1F("fhLk1_2", ";ln L(K) - ln L(#pi);entries [#]",150,-100,100);
297  fhLk1[3] = new TH1F("fhLk1_3", ";ln L(K) - ln L(#pi);entries [#]",150,-100,100);
298  }
299  if(fMom>1.5 && nevents==1 && itrack==0){
300  fhLk2[2] = new TH1F("fhLk2_2", ";ln L(K) - ln L(#pi);entries [#]",150,-100,100);
301  fhLk2[3] = new TH1F("fhLk2_3", ";ln L(K) - ln L(#pi);entries [#]",150,-100,100);
302  }
303 
304  Double_t boxPhi;
305  DetermineBarId(boxPhi, barId);
306  fMomInBar.RotateZ(-boxPhi/180.*TMath::Pi());
307 
308  DetermineCherenkov(mcBoxId, barId);
309  }
310 }
Int_t GetPdgCode() const
PndDrcBarPoint * fBarPoint
Definition: PndDrcReco.h:83
TVector3 fMomInBar
Definition: PndDrcReco.h:104
TClonesArray * fPDHitArray
Definition: PndDrcReco.h:73
Int_t fVerbose
Definition: PndDrcReco.h:93
Int_t i
Definition: run_full.C:25
Int_t GetBarId() const
TVector3 fPosInBar
Definition: PndDrcReco.h:105
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
void DetermineBarId(Double_t &boxPhi, Int_t &barId)
Definition: PndDrcReco.cxx:533
Double_t fMom
Definition: PndDrcReco.h:122
TClonesArray * fBarPointArray
Definition: PndDrcReco.h:69
void DetermineCherenkov(Int_t boxId, Int_t barId)
Definition: PndDrcReco.cxx:314
Double_t fPhi
Definition: PndDrcReco.h:122
int nHits
Definition: RiemannTest.C:16
Int_t GetBoxId() const
Double_t
TClonesArray * fMCArray
Definition: PndDrcReco.h:68
Double_t fTimeInBar
Definition: PndDrcReco.h:106
TH1F * fhLk1[5]
Definition: PndDrcReco.h:119
Int_t nevents
Definition: PndDrcReco.h:94
TRandom fRandom
Definition: PndDrcReco.h:128
PndMCTrack * fMCTrack
Definition: PndDrcReco.h:82
TH1F * fhLk2[5]
Definition: PndDrcReco.h:119
Int_t fPidTrue
Definition: PndDrcReco.h:124
Int_t GetMotherID() const
Definition: PndMCTrack.h:74
Double_t fTheta
Definition: PndDrcReco.h:122
Double_t Pi
Int_t fMcTrackId
Definition: PndDrcReco.h:124
Int_t PndDrcReco::FindPdg ( Double_t  mom,
Double_t  cangle 
)
private

Definition at line 580 of file PndDrcReco.cxx.

References acos(), Double_t, fabs(), fMass, fPdg, i, and sqrt().

580  {
581  Double_t tdiff, diff=100;
582  Int_t minid=0;
583  for(Int_t i=0; i<5; i++){
584  tdiff = fabs(cangle - acos(sqrt(mom*mom + fMass[i]*fMass[i])/mom/1.46907)); //1.46907 - fused silica
585  if(tdiff<diff){
586  diff = tdiff;
587  minid = i;
588  }
589  }
590  return fPdg[minid];
591 }
friend F32vec4 acos(const F32vec4 &a)
Definition: P4_F32vec4.h:113
Double_t fPdg[5]
Definition: PndDrcReco.h:111
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t mom
Definition: plot_dirc.C:14
Double_t
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t fMass[5]
Definition: PndDrcReco.h:112
Double_t PndDrcReco::FindPeak ( )
private

Definition at line 551 of file PndDrcReco.cxx.

References c, Double_t, fFit, fHist, fSpect, and fVerbose.

551  {
552  Double_t cherenkovreco = -1;
553 
554  if(fHist->Integral()>20 ){
555  TCanvas* c = new TCanvas("c","c",0,0,800,600);
556  Int_t nfound = fSpect->Search(fHist,1,"",0.6);
557  Float_t *xpeaks = (Float_t*)fSpect->GetPositionX();
558  if(nfound>0) cherenkovreco = xpeaks[0];
559  fFit->SetParameter(1,cherenkovreco); // peak
560  fFit->SetParameter(2,0.01); // width
561  fHist->Fit("fgaus","Q","",cherenkovreco-0.02,cherenkovreco+0.02);
562  cherenkovreco = fFit->GetParameter(1);
563  std::cout<<"sigma "<< fFit->GetParameter(2) <<std::endl;
564 
565  if(cherenkovreco<0 || cherenkovreco>1 ) cherenkovreco = 0;
566 
567  if(fVerbose>1){
568  fHist->Draw();
569  c->Modified();
570  c->Update();
571  c->WaitPrimitive();
572  // c->Print(Form("pic/animpid/animpid_%d.png",g_num++));
573  }
574  }
575  fHist->Reset();
576 
577  return cherenkovreco;
578 }
Int_t fVerbose
Definition: PndDrcReco.h:93
Double_t
TF1 * fFit
Definition: PndDrcReco.h:100
TSpectrum * fSpect
Definition: PndDrcReco.h:101
TH1F * fHist
Definition: PndDrcReco.h:99
void PndDrcReco::Finish ( )
virtual

Definition at line 638 of file PndDrcReco.cxx.

References CanvasAdd(), CanvasSave(), Double_t, fabs(), fAngle, fCangle, fEfficiency, fEvents, fEventsEff, fEventsMis, fFileOut, fFit, fhDiff, fHits, fhLk1, fhLk2, fhNph, fhTang, fhTime, fLut, fMethod, fMissId, fMom, fNph, fPhi, fSeparation, fSpr, fTheta, fTreeOut, hEnergy, hPath, hPathAll, hSD, i, m2(), and TString.

638  {
639 
640  Double_t step_mom=0.1; //[0,4]
641  Double_t step_theta=1; //[22,140]
642  Double_t step_phi=0.4; //[0,22]
643 
644  Int_t id_mom = fMom/step_mom+0.1;
645  Int_t id_theta = fTheta/step_theta+0.2;
646  Int_t id_phi = fPhi/step_phi+0.2;
647  TString strrun=Form("_%d_%d_%d",id_mom,id_theta,id_phi);
648 
649  CanvasAdd("hLikelihood"+strrun);
650  TF1 *ff;
651  Double_t m1,m2,s1,s2;
652 
653  if(fMethod==0){
654  if(fhLk1[2]->Integral()>10){
655  fhLk1[2]->Fit("gaus","S");
656  ff = fhLk1[2]->GetFunction("gaus");
657  m1=ff->GetParameter(1);
658  s1=ff->GetParameter(2);
659  }
660  if(fhLk1[3]->Integral()>10){
661  fhLk1[3]->Fit("gaus","S");
662  ff = fhLk1[3]->GetFunction("gaus");
663  m2=ff->GetParameter(1);
664  s2=ff->GetParameter(2);
665  }
666 
667  fSeparation[0] = (fabs(m2-m1))/(0.5*(s1+s2));
668  std::cout<<"separation1 "<< fSeparation[0] <<std::endl;
669 
670  fhLk1[2]->SetTitle(Form("S = %2.2f",fSeparation[0]));
671  fhLk1[2]->SetLineColor(4);
672  fhLk1[3]->SetLineColor(2);
673  fhLk1[2]->Draw();
674  fhLk1[3]->Draw("same");
675 
676  CanvasAdd("hDiff"+strrun);
677  fhDiff[2]->SetLineColor(4);
678  fhDiff[2]->Draw();
679  fhDiff[3]->SetLineColor(2);
680  fhDiff[3]->Draw("same");
681 
682  CanvasAdd("hPathAll"+strrun);
683  hPathAll->Draw();
684  hPath->SetLineColor(2);
685  hPath->Draw("same");
686 
687  CanvasAdd("hAngle"+strrun);
688  for(Int_t i=2; i<4; i++){
689  fFit->SetParameter(1,fAngle[i]); // peak
690  fFit->SetParameter(2,0.01); // width
691  if(fhTang[i]->Integral()>10){
692  fhTang[i]->Fit("fgaus","Q","",fAngle[i]-0.05,fAngle[i]+0.05);
693  fhTang[i]->Fit("fgaus","QM","",fAngle[i]-0.05,fAngle[i]+0.05);
694  fSpr[i]=fFit->GetParameter(2);
695  fCangle[i]=fFit->GetParameter(1);
696  }
697  }
698  fhTang[2]->SetTitle(Form("#theta_{C} = %2.3f #sigma = %2.4f #theta_{C} = %2.3f #sigma = %2.4f",fCangle[3],fSpr[3],fCangle[2],fSpr[2]));
699 
700  fhTang[2]->SetLineColor(4);
701  fhTang[2]->Draw();
702 
703  fhTang[3]->SetLineColor(2);
704  fhTang[3]->Draw("same");
705 
706  TLine *line = new TLine(0,0,0,1000);
707  line->SetX1(fAngle[2]);
708  line->SetX2(fAngle[2]);
709  line->SetY1(gPad->GetUymin());
710  line->SetY2(fhTang[2]->GetMaximum()*1.05);
711  line->SetLineColor(kBlue);
712  line->Draw();
713 
714  TLine *line1 = new TLine(0,0,0,1000);
715  line1->SetX1(fAngle[3]);
716  line1->SetX2(fAngle[3]);
717  line1->SetY1(gPad->GetUymin());
718  line1->SetY2(fhTang[2]->GetMaximum()*1.05);
719  line1->SetLineColor(kRed);
720  line1->Draw();
721 
722  CanvasAdd("hSD"+strrun);
723  hSD->Draw("colz");
724  }
725 
726  if(fMethod==1){
727  if(fhLk2[2]->Integral()>10){
728  fhLk2[2]->Fit("gaus","S");
729  ff = fhLk2[2]->GetFunction("gaus");
730  m1=ff->GetParameter(1);
731  s1=ff->GetParameter(2);
732  }
733  if(fhLk2[3]->Integral()>10){
734  fhLk2[3]->Fit("gaus","S");
735  ff = fhLk2[3]->GetFunction("gaus");
736  m2=ff->GetParameter(1);
737  s2=ff->GetParameter(2);
738  }
739 
740  fSeparation[1] = (fabs(m2-m1))/(0.5*(s1+s2));
741  std::cout<<"separation2 "<< fSeparation[1] <<std::endl;
742 
743  fhLk2[2]->SetTitle(Form("S = %2.2f",fSeparation[1]));
744  fhLk2[2]->SetLineColor(4);
745  fhLk2[3]->SetLineColor(2);
746  fhLk2[2]->Draw();
747  fhLk2[3]->Draw("same");
748  }
749 
750  CanvasAdd("hTime"+strrun);
751  fhTime[2]->SetLineColor(4);
752  fhTime[2]->Draw();
753  fhTime[3]->SetLineColor(2);
754  fhTime[3]->Draw("same");
755 
756  // nph pdf
757  // TFile fn("nph_"+strrun+".root","recreate");
758  // CanvasAdd("hNph"+strrun);
759  // for(Int_t i=2; i<4; i++){
760  // if(fhNph[i]->Integral()>10){
761  // fhNph[i]->Fit("gaus","Q");
762  // fFnph[i]=fhNph[i]->GetFunction("gaus");
763  // // fFnph[i]->SetParameter(0,1);
764  // fFnph[i]->SetName(Form("%d_%d_%d",i,id_mom,id_theta));
765  // fFnph[i]->Write();
766  // }
767  // }
768  // fn.Close();
769 
770  fhNph[2]->SetLineColor(4);
771  fhNph[2]->Draw();
772  fhNph[3]->SetLineColor(2);
773  fhNph[3]->Draw("same");
774 
775  CanvasAdd("hEnergy"+strrun);
776  hEnergy->Draw();
777 
778  for(Int_t l=0; l<5; l++) fLut[l]->Clear();
779  for(Int_t i=0; i<5; i++){
780  if(fEvents[i]<1) continue;
781  fNph[i]=fHits[i]/(Double_t)fEvents[i];
784  }
785 
786  std::cout<<"N pi "<<fNph[2] << " N K " <<fNph[3] <<std::endl;
787  std::cout<<"Eff_K "<< fEfficiency[3] << " Mis_K "<<fMissId[3] <<std::endl;
788  std::cout<<"Eff_pi "<< fEfficiency[2] << " Mis_pi "<<fMissId[2] <<std::endl;
789 
790  fFileOut->cd();
791  fhTang[2]->Write();
792  fhTang[3]->Write();
793  fTreeOut->Fill();
794  fTreeOut->Write();
795  fFileOut->Write();
796 
797  CanvasSave(Form("data/reco/%d/",id_mom));
798 
799  cout << "-I- PndDrcReco: Finish" << endl;
800 }
Int_t fMethod
Definition: PndDrcReco.h:103
TH1F * fhTime[5]
Definition: PndDrcReco.h:119
Double_t fCangle[5]
Definition: PndDrcReco.h:122
TH1F * fhNph[5]
Definition: PndDrcReco.h:119
TClonesArray * fLut[5]
Definition: PndDrcReco.h:74
Double_t fMissId[5]
Definition: PndDrcReco.h:123
void CanvasSave(TString path="data/reco")
Definition: PndDrcReco.cxx:597
Int_t i
Definition: run_full.C:25
Double_t fNph[5]
Definition: PndDrcReco.h:122
TTree * fTreeOut
Definition: PndDrcReco.h:80
TH2F * hSD
Definition: PndDrcReco.cxx:254
TFile * fFileOut
Definition: PndDrcReco.h:78
Double_t fMom
Definition: PndDrcReco.h:122
TH1F * hPathAll
Definition: PndDrcReco.cxx:252
Double_t fSpr[5]
Definition: PndDrcReco.h:122
Int_t fEventsMis[5]
Definition: PndDrcReco.h:125
TString m2(TString pts, TString exts="e px py pz")
Definition: invexp.C:117
Double_t fPhi
Definition: PndDrcReco.h:122
Double_t
TH1F * fhLk1[5]
Definition: PndDrcReco.h:119
Double_t fSeparation[2]
Definition: PndDrcReco.h:122
TF1 * fFit
Definition: PndDrcReco.h:100
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
void CanvasAdd(TString name="c", Int_t w=800, Int_t h=400)
Definition: PndDrcReco.cxx:593
TH1F * fhLk2[5]
Definition: PndDrcReco.h:119
TH1F * fhDiff[5]
Definition: PndDrcReco.h:119
TH1F * hEnergy
Definition: PndDrcReco.cxx:251
Int_t fHits[5]
Definition: PndDrcReco.h:125
TH1F * hPath
Definition: PndDrcReco.cxx:253
Double_t fAngle[5]
Definition: PndDrcReco.h:113
Double_t fTheta
Definition: PndDrcReco.h:122
Int_t fEvents[5]
Definition: PndDrcReco.h:125
Double_t fEfficiency[5]
Definition: PndDrcReco.h:123
Int_t fEventsEff[5]
Definition: PndDrcReco.h:125
TH1F * fhTang[5]
Definition: PndDrcReco.h:119
InitStatus PndDrcReco::Init ( )
virtual

Definition at line 39 of file PndDrcReco.cxx.

References PndGeoDrc::barhGap(), PndGeoDrc::BarWidth(), PndGeoDrc::BBoxNum(), c_mean, c_spr, Double_t, fAngle, fBarPhi, fBarPointArray, fCangle, fCanvasList, fCriticalAngle, fDphi, fEfficiency, fEvents, fEventsEff, fEventsMis, fEVPointArray, fEvType, fFile, fFileOut, fFit, fFunc, fGeo, fhDiff, fHist, fHits, fhLk1, fhLk2, fhNph, fhPdf, fhTang, fhTime, fLensType, fLikelihood, fLut, fLutFile, fMass, fMCArray, fMethod, fMissId, fMom, fNph, fNx, fNy, fOutFile, fParticleArray, fPdfFile, fPdg, fPDHitArray, fPDPointArray, fPhi, fPidDist, fPidLike, fPidTrue, fPipehAngle, fR1, fR2, fRadType, fSeparation, fSpect, fSpr, fTheta, fTree, fTreeOut, i, m, name, nevents, PndGeoDrc::nQuartz(), p, Pi, PndGeoDrc::PipehAngle(), PndGeoDrc::radius(), t, and TString.

39  {
40  cout << " ---------- INITIALIZATION ------------" << endl;
41  nevents = -1;
42  // Get RootManager
43  FairRootManager* ioman = FairRootManager::Instance();
44  if ( ! ioman ) {
45  cout << "-E- PndDrcReco::Init: " << "RootManager not instantiated!" << endl;
46  return kFATAL;
47  }
48 
49  // Get input array
50  fMCArray = (TClonesArray*) ioman->GetObject("MCTrack");
51  if ( ! fMCArray ) {
52  cout << "-W- PndDrcReco::Init: " << "No MCTrack array!" << endl;
53  return kERROR;
54  }
55 
56  // Get bar points array
57  fBarPointArray = (TClonesArray*) ioman->GetObject("DrcBarPoint");
58  if ( ! fBarPointArray ) {
59  cout << "-W- PndDrcReco::Init: " << "No DrcBarPoint array!" << endl;
60  return kERROR;
61  }
62 
63  // Get ev points array
64  fEVPointArray = (TClonesArray*) ioman->GetObject("DrcEVPoint");
65  if ( ! fEVPointArray ) {
66  cout << "-W- PndDrcReco::Init: " << "No DrcEVPoint array!" << endl;
67  return kERROR;
68  }
69 
70  // Get Photon point array
71  fPDPointArray = (TClonesArray*) ioman->GetObject("DrcPDPoint");
72  if ( ! fPDPointArray ) {
73  cout << "-W- PndDrcReco::Init: " << "No DrcPDPoint array!" << endl;
74  return kERROR;
75  }
76 
77  // Get hits array
78  fPDHitArray = (TClonesArray*) ioman->GetObject("DrcPDHit");
79  if ( ! fPDHitArray ) {
80  cout << "-W- PndDrcReco::Init: " << "No DrcPDHit array!" << endl;
81  return kERROR;
82  }
83 
85  name.Remove(0,name.Last('/')+1);
86  sscanf(name, "lut_e%d_b%d_l%d", &fEvType,&fRadType,&fLensType);
87 
88  fFile = new TFile(fLutFile);
89  fTree=(TTree *) fFile->Get("dircsim") ;
90  for(Int_t l=0; l<5; l++){
91  fLut[l] = new TClonesArray("PndDrcLutNode");
92  fTree->SetBranchAddress(Form("LUT%d",l),&fLut[l]);
93  }
94  fTree->GetEntry(0);
95 
96 
97  //corrections lut
98  const Int_t maxpoints(150);
99  Double_t meanc2[maxpoints],spr2[maxpoints],meanc3[maxpoints],spr3[maxpoints];
100  name = fLutFile;
101  name.Remove(name.Last('/')+1);
102 
103  Long_t id,size,flags,modtime;
104  if(!gSystem->GetPathInfo((name+"corrlut.root").Data(),&id,&size,&flags,&modtime)){
105  TFile *fc = new TFile(name+"corrlut.root");
106  TTree *tc = (TTree*)fc->Get("corrlut");
107  tc->SetBranchAddress("meanc2",&meanc2);
108  tc->SetBranchAddress("meanc3",&meanc3);
109  tc->SetBranchAddress("spr2",&spr2);
110  tc->SetBranchAddress("spr3",&spr3);
111 
112  for (Int_t i = 0; i < tc->GetEntriesFast(); i++) {
113  tc->GetEvent(i);
114  for(Int_t j=0; j<145; j++){
115  c_mean[2][i+1][j]=meanc2[j];
116  c_mean[3][i+1][j]=meanc3[j];
117  c_spr[2][i+1][j]=spr2[j];
118  c_spr[3][i+1][j]=spr3[j];
119  }
120  }
121  fc->Close();
122  }
123 
124 
125  for(Int_t p=0; p<5; p++){
126  for(Int_t m=0; m<40; m++){
127  for(Int_t t=0; t<120; t++){
128  for(Int_t i=0; i<1100; i++){
129  fhPdf[p][m][t][i] = NULL;
130  }
131  }
132  }
133  }
134 
135  if(!gSystem->GetPathInfo(fPdfFile.Data(),&id,&size,&flags,&modtime)){
136  TFile fpdf(fPdfFile);
137  TIter nextkey(fpdf.GetListOfKeys());
138  TKey *key;
139  while ((key = (TKey*)nextkey())) {
140  TH1F *fun = (TH1F*)key->ReadObj();
141  Int_t p,m,t,i;
142  sscanf(fun->GetName(), "pdf_%d_%d_%d_%d", &p,&m,&t,&i);
143  fhPdf[p][m][t][i]=fun;
144  fhPdf[p][m][t][i]->SetDirectory(0);
145  }
146  fpdf.Close();
147  }
148 
149  // //nph lut
150  // name = fLutFile;
151  // name.Remove(name.Last('/')+1);
152  // TFile fn_r(name+"nph.root");
153  // TIter nextkey(fn_r.GetListOfKeys());
154  // TKey *key;
155 
156  // while ((key = (TKey*)nextkey())) {
157  // TF1 *fun = (TF1*)key->ReadObj();
158  // Int_t i,m,t;
159  // sscanf(fun->GetName(), "%d_%d_%d", &i,&m,&t);
160  // fhNphArr[i][m][t]=fun;
161  // }
162  // fn_r.Close();
163 
164  //Double_t mom(0), theta(0),phi(0), trr(0), nph(0),
165  //par1(0), par2(0), par3(0), par4(0), par5(0), par6(0), test1(0), test2(0), test3(0),separation(0); //[R.K. 01/2017] unused variable?
166 
167  if(fOutFile.Contains("reco")) fOutFile.ReplaceAll("reco","rt_reco");
168  else fOutFile.ReplaceAll(".root","t.root");
169  fFileOut = new TFile(fOutFile,"recreate");
170  fTreeOut = new TTree("barreldirc","SPR");
171 
172  fTreeOut->Branch("fMom",&fMom,"fMom/D");
173  fTreeOut->Branch("fTheta",&fTheta,"fTheta/D");
174  fTreeOut->Branch("fPhi",&fPhi,"fPhi/D");
175  fTreeOut->Branch("fPidTrue", &fPidTrue,"fPidTrue/I");
176  fTreeOut->Branch("fPidDist", &fPidDist,"fPidDist/I");
177 
178  fTreeOut->Branch("fMissId", &fMissId,"fMissId[5]/D");
179  fTreeOut->Branch("fEfficiency", &fEfficiency,"fEfficiency[5]/D");
180 
181  fTreeOut->Branch("fPidLike", &fPidLike,"fPidLike[2]/I");
182  fTreeOut->Branch("fLikelihood",&fLikelihood,"fLikelihood[2]/D");
183  fTreeOut->Branch("fSeparation",&fSeparation,"fSeparation[2]/D");
184  fTreeOut->Branch("fSpr", &fSpr,"fSpr[5]/D");
185  fTreeOut->Branch("fNph", &fNph,"fNph[5]/D");
186  fTreeOut->Branch("fCangle",&fCangle,"fCangle[5]/D");
187  fTreeOut->Branch("fR1",&fR1,"fR1/D");
188  fTreeOut->Branch("fR2",&fR2,"fR2/D");
189 
190  fFile->cd();
191 
192  fGeo = new PndGeoDrc();
194  Double_t barwidth = fGeo->BarWidth();
195  if(fRadType==3) barwidth = 5.41333;
196  fBarPhi = 2*atan(((barwidth + fGeo->barhGap())/2.)/fGeo->radius())*180/TMath::Pi();
197  fDphi = 2.*(180. - 2*fPipehAngle)/(Double_t)fGeo->BBoxNum();
198 
199  fHist = new TH1F("cherenkov_angle_hist",";#theta_{c} [rad];entries [#]", 100,0.6,0.9);
200  fFit = new TF1("fgaus","[0]*exp(-0.5*((x-[1])/[2])*(x-[1])/[2]) + x*[3]+ [4]",0.35,0.85);
201  fSpect = new TSpectrum(10);
202 
203  fNx = TVector3(1,0,0);
204  fNy = TVector3(0,1,0);
205  fCriticalAngle = asin(1.00028/fGeo->nQuartz());
206 
207  Int_t pdg[]={11,13,211,321,2212};
208  Double_t mass[] = {0.000511,0.1056584,0.139570,0.49368,0.9382723};
209 
210 
211  gStyle->SetOptStat(1);
212  gStyle->SetOptTitle(1);
213 
214  for(Int_t i=0; i<5; i++){
215  fParticleArray[pdg[i]]=i;
216  fPdg[i]=pdg[i];
217  fMass[i]=mass[i];
218  fHits[i]=0;
219  fEvents[i]=0;
220  fEventsEff[i]=0;
221  fEventsMis[i]=0;
222  fMissId[i]=0;
223  fEfficiency[i]=0;
224  fAngle[i] = 0;
225  fFunc[i] = new TF1(Form("f_%d",i),"gaus(0)",0.4,0.9);
226 
227  fFunc[i]->SetParameter(0,1);
228  fFunc[i]->SetParameter(2,0.01);
229 
230  if(i==2) fFunc[i]->SetParameter(2,0.0095);
231  if(i==3) fFunc[i]->SetParameter(2,0.0095); //95
232 
233  fhLk1[i] = new TH1F(Form("fhLk1_%d",i), ";ln L(K) - ln L(#pi);entries [#]",150,-400,400);
234  fhLk2[i] = new TH1F(Form("fhLk2_%d",i), ";ln L(K) - ln L(#pi);entries [#]",150,-400,400);
235  fhTang[i] = new TH1F(Form("cherenkov_angle_hist_%d",i),";#theta_{c} [rad];entries [#]", 100,0.4,0.9);
236  fhTang[i]->SetMinimum(0);
237  fhDiff[i] = new TH1F(Form("fhDiff_%d",i),";t_{lut} - t_{daq} [ns];entries [#]",200,-10,10);
238  fhTime[i] = new TH1F(Form("fhTime_%d",i),";time [ns];entries [#]",200,0,100);
239  fhNph[i] = new TH1F(Form("fhNph_%d",i),";detected photons [#];entries [#]",150,0,150);
240 
241  fhTang[i]->SetStats(0);
242  }
243  fCanvasList = new TList();
244 
245  fMethod=1;
246 
247  cout << "-I- PndDrcReco: Intialization successfull" << endl;
248  return kSUCCESS;
249 }
Int_t fMethod
Definition: PndDrcReco.h:103
TH1F * fhTime[5]
Definition: PndDrcReco.h:119
TTree * fTree
Definition: PndDrcReco.h:79
Double_t fPdg[5]
Definition: PndDrcReco.h:111
Double_t p
Definition: anasim.C:58
Double_t fCangle[5]
Definition: PndDrcReco.h:122
TH1F * fhNph[5]
Definition: PndDrcReco.h:119
Double_t c_spr[5][50][150]
Definition: PndDrcReco.h:132
TClonesArray * fPDHitArray
Definition: PndDrcReco.h:73
TClonesArray * fLut[5]
Definition: PndDrcReco.h:74
Double_t fMissId[5]
Definition: PndDrcReco.h:123
Double_t fPipehAngle
Definition: PndDrcReco.h:66
Double_t BBoxNum()
Definition: PndGeoDrc.h:136
Int_t i
Definition: run_full.C:25
Double_t fNph[5]
Definition: PndDrcReco.h:122
__m128 m
Definition: P4_F32vec4.h:28
Double_t fR1
Definition: PndDrcReco.h:127
TTree * fTreeOut
Definition: PndDrcReco.h:80
TFile * fFileOut
Definition: PndDrcReco.h:78
Double_t fCriticalAngle
Definition: PndDrcReco.h:109
TF1 * fFunc[5]
Definition: PndDrcReco.h:114
Double_t fDphi
Definition: PndDrcReco.h:66
Double_t BarWidth()
Definition: PndGeoDrc.h:100
TVector3 fNy
Definition: PndDrcReco.h:126
Double_t fMom
Definition: PndDrcReco.h:122
TClonesArray * fBarPointArray
Definition: PndDrcReco.h:69
TString fLutFile
Definition: PndDrcReco.h:96
Double_t fSpr[5]
Definition: PndDrcReco.h:122
Int_t fParticleArray[3000]
Definition: PndDrcReco.h:103
Int_t fEventsMis[5]
Definition: PndDrcReco.h:125
Double_t PipehAngle()
Definition: PndGeoDrc.h:139
Double_t fPhi
Definition: PndDrcReco.h:122
TH1F * fhPdf[5][40][120][1100]
Definition: PndDrcReco.h:120
Int_t fPidDist
Definition: PndDrcReco.h:124
Double_t
TClonesArray * fMCArray
Definition: PndDrcReco.h:68
TFile * fFile
Definition: PndDrcReco.h:77
TH1F * fhLk1[5]
Definition: PndDrcReco.h:119
Double_t c_mean[5][50][150]
Definition: PndDrcReco.h:132
Double_t fSeparation[2]
Definition: PndDrcReco.h:122
Int_t nevents
Definition: PndDrcReco.h:94
Double_t fLikelihood[2]
Definition: PndDrcReco.h:122
Double_t nQuartz()
Definition: PndGeoDrc.h:70
TF1 * fFit
Definition: PndDrcReco.h:100
PndGeoDrc * fGeo
Definition: PndDrcReco.h:65
TString name
Double_t barhGap()
Definition: PndGeoDrc.h:112
Int_t fPidLike[2]
Definition: PndDrcReco.h:124
Int_t fEvType
Definition: PndDrcReco.h:98
TH1F * fhLk2[5]
Definition: PndDrcReco.h:119
TSpectrum * fSpect
Definition: PndDrcReco.h:101
TString fPdfFile
Definition: PndDrcReco.h:97
TString fOutFile
Definition: PndDrcReco.h:95
TH1F * fhDiff[5]
Definition: PndDrcReco.h:119
TList * fCanvasList
Definition: PndDrcReco.h:130
Int_t fLensType
Definition: PndDrcReco.h:98
Int_t fRadType
Definition: PndDrcReco.h:98
TClonesArray * fPDPointArray
Definition: PndDrcReco.h:71
Int_t fHits[5]
Definition: PndDrcReco.h:125
TTree * t
Definition: bump_analys.C:13
Double_t fBarPhi
Definition: PndDrcReco.h:66
Double_t fMass[5]
Definition: PndDrcReco.h:112
Double_t fAngle[5]
Definition: PndDrcReco.h:113
Int_t fPidTrue
Definition: PndDrcReco.h:124
TVector3 fNx
Definition: PndDrcReco.h:126
Double_t fTheta
Definition: PndDrcReco.h:122
Double_t Pi
Int_t fEvents[5]
Definition: PndDrcReco.h:125
Double_t fEfficiency[5]
Definition: PndDrcReco.h:123
TClonesArray * fEVPointArray
Definition: PndDrcReco.h:70
Int_t fEventsEff[5]
Definition: PndDrcReco.h:125
Double_t fR2
Definition: PndDrcReco.h:127
Double_t radius()
Definition: PndGeoDrc.h:92
TH1F * fHist
Definition: PndDrcReco.h:99
TH1F * fhTang[5]
Definition: PndDrcReco.h:119
void PndDrcReco::LookUpTable ( Int_t  barId,
Int_t  sensorId 
)
private

Definition at line 436 of file PndDrcReco.cxx.

References At, Bool_t, c_mean, cos(), Double_t, PndDrcLutNode::Entries(), fabs(), fAngle, fCriticalAngle, fFunc, fhDiff, fHist, fHitsE, fhTang, fhTime, fLenz, fLk1, fLut, fMCTrack, fMom, fMomInBar, fNx, fNy, fParticleArray, fPidTrue, fPosInBar, fReflected, fTheta, fTimeHit, PndDrcLutNode::GetEntry(), PndMCTrack::GetMomentum(), PndDrcLutNode::GetPath(), PndDrcLutNode::GetPathId(), PndDrcLutNode::GetTime(), gg_pathid, hPath, hPathAll, hSD, i, CAMath::Log(), noise, Pi, and pid().

Referenced by DetermineCherenkov().

436  {
437  TVector3 dird, dir;
438  Double_t evtime, luttime, luttheta, tangle, noise(0.3);
439  Int_t pid=fParticleArray[fPidTrue];
440 
441  if(fMCTrack->GetMomentum().Z()>0) fReflected = kTRUE;
442  else fReflected = kFALSE;
443 
444  fLenz = fPosInBar.Z()+119;
445  if(fReflected) fLenz = 2*240 - fLenz;
446 
447  PndDrcLutNode *node = (PndDrcLutNode*) fLut[barId]->At(sensorId);
448  Int_t size = node->Entries();
449 
450  Bool_t isGood(false);
451  for(int i=0; i<size; i++){
452  dird = node->GetEntry(i);
453  evtime = node->GetTime(i);
454 
455  hPathAll->Fill(node->GetPathId(i));
456  if((Int_t)gg_pathid != (Int_t)node->GetPath(i)){
457  //continue;
458  }else{
459  hPath->Fill(node->GetPathId(i));
460  }
461 
462  for(int u=0; u<4; u++){
463  if(u == 0) dir = dird;
464  if(u == 1) dir.SetXYZ(-dird.X(), dird.Y(), dird.Z());
465  if(u == 2) dir.SetXYZ( dird.X(),-dird.Y(), dird.Z());
466  if(u == 3) dir.SetXYZ(-dird.X(),-dird.Y(), dird.Z());
467  if(fReflected) dir.SetXYZ( dir.X(), dir.Y(),-dir.Z());
468 
469  if(dir.Angle(fNx) < fCriticalAngle || dir.Angle(fNy) < fCriticalAngle) continue;
470 
471  luttheta = dir.Theta();
472  if(luttheta > TMath::Pi()/2.) luttheta = TMath::Pi()-luttheta;
473  luttime = fLenz/cos(luttheta)/19.8 + evtime;
474 
475  Double_t tdiff=luttime -fTimeHit;
476 
477  tangle = fMomInBar.Angle(dir);
478 
479  // tangle += 0.002*tdiff;
480 
481  // //mean shift correction
482  // if(fPidTrue==211) tangle += shiftPi[(Int_t)(fTheta+0.2-22)];
483  // if(fPidTrue==321) tangle += shiftK[(Int_t)(fTheta+0.2-22)];
484 
485  Int_t momid=fMom*10+0.5;
486  Int_t thetaid=fTheta+0.5;
487  if(fabs(c_mean[pid][momid][thetaid])<0.008) tangle += c_mean[pid][momid][thetaid];
488  //tangle += 0.5*(c_mean[2][momid][thetaid]+c_mean[3][momid][thetaid]);
489 
490  // if(tangle<fAngle[3]-0.04 || tangle>fAngle[2]+0.04) continue;
491  if(tangle < 0.4 || tangle > 0.9) continue;
492 
493  fhTime[pid]->Fill(fTimeHit);
494  fhDiff[pid]->Fill(tdiff);
495 
496  if(fabs(tdiff)>1.0) continue;
497 
498  if(fabs(tangle-fAngle[pid])<0.1) isGood=true;
499  // if(tangle > 0.75 && tangle < 0.85) isGood=true;
500 
501  hSD->Fill(tangle,tdiff);
502 
503  fLk1[2] += TMath::Log((fFunc[2]->Eval(tangle)+noise)); // 211
504  fLk1[3] += TMath::Log((fFunc[3]->Eval(tangle)+noise)); // 321
505 
506 
507  fhTang[pid]->Fill(tangle);
508  fHist->Fill(tangle);
509  }
510  }
511  if(isGood) fHitsE[pid]++;
512 }
TH1F * fhTime[5]
Definition: PndDrcReco.h:119
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
Int_t GetPathId(Int_t entry)
Definition: PndDrcLutNode.h:40
TVector3 fMomInBar
Definition: PndDrcReco.h:104
TClonesArray * fLut[5]
Definition: PndDrcReco.h:74
Int_t gg_pathid
Definition: PndDrcReco.cxx:313
Int_t i
Definition: run_full.C:25
TH2F * hSD
Definition: PndDrcReco.cxx:254
Double_t fCriticalAngle
Definition: PndDrcReco.h:109
TF1 * fFunc[5]
Definition: PndDrcReco.h:114
TVector3 fPosInBar
Definition: PndDrcReco.h:105
int pid()
TVector3 fNy
Definition: PndDrcReco.h:126
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
Int_t fHitsE[5]
Definition: PndDrcReco.h:125
Double_t fMom
Definition: PndDrcReco.h:122
TH1F * hPathAll
Definition: PndDrcReco.cxx:252
Double_t GetPath(Int_t entry)
Definition: PndDrcLutNode.h:41
Int_t fParticleArray[3000]
Definition: PndDrcReco.h:103
Double_t
Double_t fLenz
Definition: PndDrcReco.h:108
Double_t c_mean[5][50][150]
Definition: PndDrcReco.h:132
Double_t fTimeHit
Definition: PndDrcReco.h:107
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
PndMCTrack * fMCTrack
Definition: PndDrcReco.h:82
TVector3 GetEntry(Int_t entry)
Definition: PndDrcLutNode.h:39
Double_t GetTime(Int_t entry)
Definition: PndDrcLutNode.h:42
TH1F * fhDiff[5]
Definition: PndDrcReco.h:119
Int_t Entries()
Definition: PndDrcLutNode.h:36
Double_t fLk1[5]
Definition: PndDrcReco.h:116
static T Log(const T &x)
Definition: PndCAMath.h:40
Bool_t fReflected
Definition: PndDrcReco.h:110
TH1F * hPath
Definition: PndDrcReco.cxx:253
Double_t fAngle[5]
Definition: PndDrcReco.h:113
Int_t fPidTrue
Definition: PndDrcReco.h:124
TVector3 fNx
Definition: PndDrcReco.h:126
Double_t fTheta
Definition: PndDrcReco.h:122
Double_t Pi
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 noise
TH1F * fHist
Definition: PndDrcReco.h:99
TH1F * fhTang[5]
Definition: PndDrcReco.h:119
void PndDrcReco::SetDefaultParameters ( )
private
void PndDrcReco::TimeImaging ( Int_t  sensorId)
private

Definition at line 514 of file PndDrcReco.cxx.

References Double_t, fhPdf, fhTime, fLk2, fMom, fParticleArray, fPidTrue, fTheta, fTimeHit, CAMath::Log(), noise, and pid().

Referenced by DetermineCherenkov().

514  {
515  Double_t noise = 1e-3;
516  Int_t momid=fMom*10+0.5;
517  Int_t thetaid=fTheta+0.5;
518  Int_t pid=fParticleArray[fPidTrue];
519 
520  fhTime[pid]->Fill(fTimeHit);
521  if(fhPdf[2][momid][thetaid][sensorId] && fhPdf[3][momid][thetaid][sensorId]){
522  // TCanvas* c = new TCanvas("c","c",0,0,800,600);
523  // fhPdf[2][momid][thetaid][sensorId]->Draw();
524  // fhPdf[3][momid][thetaid][sensorId]->Draw("same");
525  // c->Update();
526  // c->WaitPrimitive();
527  fLk2[2] += TMath::Log(fhPdf[2][momid][thetaid][sensorId]->GetBinContent(fhPdf[2][momid][thetaid][sensorId]->FindBin(fTimeHit))+noise);
528  fLk2[3] += TMath::Log(fhPdf[3][momid][thetaid][sensorId]->GetBinContent(fhPdf[3][momid][thetaid][sensorId]->FindBin(fTimeHit))+noise);
529 
530  }
531 }
TH1F * fhTime[5]
Definition: PndDrcReco.h:119
int pid()
Double_t fMom
Definition: PndDrcReco.h:122
Int_t fParticleArray[3000]
Definition: PndDrcReco.h:103
TH1F * fhPdf[5][40][120][1100]
Definition: PndDrcReco.h:120
Double_t
Double_t fLk2[5]
Definition: PndDrcReco.h:117
Double_t fTimeHit
Definition: PndDrcReco.h:107
static T Log(const T &x)
Definition: PndCAMath.h:40
Int_t fPidTrue
Definition: PndDrcReco.h:124
Double_t fTheta
Definition: PndDrcReco.h:122
double noise

Member Data Documentation

Double_t PndDrcReco::c_mean[5][50][150]
private

Definition at line 132 of file PndDrcReco.h.

Referenced by Init(), and LookUpTable().

Double_t PndDrcReco::c_spr[5][50][150]
private

Definition at line 132 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Init().

Double_t PndDrcReco::fAngle[5]
private

Definition at line 113 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), Init(), and LookUpTable().

Double_t PndDrcReco::fBarPhi
private

Definition at line 66 of file PndDrcReco.h.

Referenced by DetermineBarId(), and Init().

PndDrcBarPoint* PndDrcReco::fBarPoint
private

Definition at line 83 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Exec().

TClonesArray* PndDrcReco::fBarPointArray
private

Definition at line 69 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), and Init().

Double_t PndDrcReco::fBboxNum
private

Definition at line 66 of file PndDrcReco.h.

Double_t PndDrcReco::fCangle[5]
private

Definition at line 122 of file PndDrcReco.h.

Referenced by Finish(), and Init().

TList* PndDrcReco::fCanvasList
private

Definition at line 130 of file PndDrcReco.h.

Referenced by CanvasAdd(), CanvasSave(), and Init().

Double_t PndDrcReco::fCriticalAngle
private

Definition at line 109 of file PndDrcReco.h.

Referenced by Init(), and LookUpTable().

Double_t PndDrcReco::fDiffLn1
private

Definition at line 118 of file PndDrcReco.h.

Double_t PndDrcReco::fDiffLn2
private

Definition at line 118 of file PndDrcReco.h.

PndDrcDigi* PndDrcReco::fDigi
private

Definition at line 86 of file PndDrcReco.h.

TClonesArray* PndDrcReco::fDigiArray
private

Definition at line 72 of file PndDrcReco.h.

Double_t PndDrcReco::fDphi
private

Definition at line 66 of file PndDrcReco.h.

Referenced by DetermineBarId(), and Init().

TClonesArray* PndDrcReco::fDrcTrackInfoArray
private

Definition at line 75 of file PndDrcReco.h.

Double_t PndDrcReco::fEfficiency[5]
private

Definition at line 123 of file PndDrcReco.h.

Referenced by Finish(), and Init().

Int_t PndDrcReco::fEvents[5]
private

Definition at line 125 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

Int_t PndDrcReco::fEventsEff[5]
private

Definition at line 125 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

Int_t PndDrcReco::fEventsMis[5]
private

Definition at line 125 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

PndDrcEVPoint* PndDrcReco::fEVPoint
private

Definition at line 84 of file PndDrcReco.h.

Referenced by DetermineCherenkov().

TClonesArray* PndDrcReco::fEVPointArray
private

Definition at line 70 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Init().

Int_t PndDrcReco::fEvType
private

Definition at line 98 of file PndDrcReco.h.

Referenced by Init().

TFile* PndDrcReco::fFile
private

Definition at line 77 of file PndDrcReco.h.

Referenced by Init().

TFile* PndDrcReco::fFileOut
private

Definition at line 78 of file PndDrcReco.h.

Referenced by Finish(), and Init().

TF1* PndDrcReco::fFit
private

Definition at line 100 of file PndDrcReco.h.

Referenced by FindPeak(), Finish(), and Init().

TF1 * PndDrcReco::fFnph[5]
private

Definition at line 114 of file PndDrcReco.h.

TF1* PndDrcReco::fFunc[5]
private

Definition at line 114 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Init(), and LookUpTable().

PndGeoDrc* PndDrcReco::fGeo
private

Definition at line 65 of file PndDrcReco.h.

Referenced by Init().

TH1F * PndDrcReco::fhDiff[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by Finish(), Init(), and LookUpTable().

TH1F* PndDrcReco::fHist
private

Definition at line 99 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), FindPeak(), Init(), and LookUpTable().

TH1F * PndDrcReco::fHist1
private

Definition at line 99 of file PndDrcReco.h.

TH1F * PndDrcReco::fHist2
private

Definition at line 99 of file PndDrcReco.h.

Int_t PndDrcReco::fHits[5]
private

Definition at line 125 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

Int_t PndDrcReco::fHitsE[5]
private

Definition at line 125 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and LookUpTable().

TH1F* PndDrcReco::fhLk1[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), Finish(), and Init().

TH1F * PndDrcReco::fhLk2[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), Finish(), and Init().

TH1F * PndDrcReco::fhNph[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

TF1 * PndDrcReco::fhNphArr[5][40][150]
private

Definition at line 114 of file PndDrcReco.h.

TH1F* PndDrcReco::fhPdf[5][40][120][1100]
private

Definition at line 120 of file PndDrcReco.h.

Referenced by Init(), and TimeImaging().

TH1F * PndDrcReco::fhTang[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by Finish(), Init(), and LookUpTable().

TH1F * PndDrcReco::fhTime[5]
private

Definition at line 119 of file PndDrcReco.h.

Referenced by Finish(), Init(), LookUpTable(), and TimeImaging().

Int_t PndDrcReco::fLensType
private

Definition at line 98 of file PndDrcReco.h.

Referenced by Init().

Double_t PndDrcReco::fLenz
private

Definition at line 108 of file PndDrcReco.h.

Referenced by LookUpTable().

Double_t PndDrcReco::fLikelihood[2]
private

Definition at line 122 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Init().

Double_t PndDrcReco::fLk1[5]
private

Definition at line 116 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and LookUpTable().

Double_t PndDrcReco::fLk2[5]
private

Definition at line 117 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and TimeImaging().

TClonesArray* PndDrcReco::fLut[5]
private

Definition at line 74 of file PndDrcReco.h.

Referenced by Finish(), Init(), and LookUpTable().

TString PndDrcReco::fLutFile
private

Definition at line 96 of file PndDrcReco.h.

Referenced by Init().

Double_t PndDrcReco::fMass[5]
private

Definition at line 112 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), FindPdg(), and Init().

TClonesArray* PndDrcReco::fMCArray
private

Definition at line 68 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), and Init().

PndMCTrack* PndDrcReco::fMCTrack
private

Definition at line 82 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), and LookUpTable().

Int_t PndDrcReco::fMcTrackId
private

Definition at line 124 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Exec().

Int_t PndDrcReco::fMethod
private

Definition at line 103 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Finish(), and Init().

Double_t PndDrcReco::fMissId[5]
private

Definition at line 123 of file PndDrcReco.h.

Referenced by Finish(), and Init().

Double_t PndDrcReco::fMom
private

Definition at line 122 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), Finish(), Init(), LookUpTable(), and TimeImaging().

TVector3 PndDrcReco::fMomInBar
private

Definition at line 104 of file PndDrcReco.h.

Referenced by Exec(), and LookUpTable().

Double_t PndDrcReco::fNph[5]
private

Definition at line 122 of file PndDrcReco.h.

Referenced by Finish(), and Init().

TVector3 PndDrcReco::fNx
private

Definition at line 126 of file PndDrcReco.h.

Referenced by Init(), and LookUpTable().

TVector3 PndDrcReco::fNy
private

Definition at line 126 of file PndDrcReco.h.

Referenced by Init(), and LookUpTable().

TString PndDrcReco::fOutFile
private

Definition at line 95 of file PndDrcReco.h.

Referenced by CanvasSave(), and Init().

Int_t PndDrcReco::fParticleArray[3000]
private

Definition at line 103 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Init(), LookUpTable(), and TimeImaging().

TString PndDrcReco::fPdfFile
private

Definition at line 97 of file PndDrcReco.h.

Referenced by Init().

Double_t PndDrcReco::fPdg[5]
private

Definition at line 111 of file PndDrcReco.h.

Referenced by FindPdg(), and Init().

PndDrcPDHit* PndDrcReco::fPDHit
private

Definition at line 87 of file PndDrcReco.h.

Referenced by DetermineCherenkov().

TClonesArray* PndDrcReco::fPDHitArray
private

Definition at line 73 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), and Init().

PndDrcPDPoint* PndDrcReco::fPDPoint
private

Definition at line 85 of file PndDrcReco.h.

Referenced by DetermineCherenkov().

TClonesArray* PndDrcReco::fPDPointArray
private

Definition at line 71 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Init().

Double_t PndDrcReco::fPhi
private

Definition at line 122 of file PndDrcReco.h.

Referenced by Exec(), Finish(), and Init().

Int_t PndDrcReco::fPidDist
private

Definition at line 124 of file PndDrcReco.h.

Referenced by Init().

Int_t PndDrcReco::fPidLike[2]
private

Definition at line 124 of file PndDrcReco.h.

Referenced by Init().

Int_t PndDrcReco::fPidTrue
private

Definition at line 124 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), Init(), LookUpTable(), and TimeImaging().

Double_t PndDrcReco::fPipehAngle
private

Definition at line 66 of file PndDrcReco.h.

Referenced by DetermineBarId(), and Init().

TVector3 PndDrcReco::fPosInBar
private

Definition at line 105 of file PndDrcReco.h.

Referenced by DetermineBarId(), Exec(), and LookUpTable().

Double_t PndDrcReco::fR1
private

Definition at line 127 of file PndDrcReco.h.

Referenced by Init(), and PndDrcReco().

Double_t PndDrcReco::fR2
private

Definition at line 127 of file PndDrcReco.h.

Referenced by Init(), and PndDrcReco().

Int_t PndDrcReco::fRadType
private

Definition at line 98 of file PndDrcReco.h.

Referenced by DetermineBarId(), and Init().

TRandom PndDrcReco::fRandom
private

Definition at line 128 of file PndDrcReco.h.

Referenced by Exec().

Bool_t PndDrcReco::fReflected
private

Definition at line 110 of file PndDrcReco.h.

Referenced by LookUpTable().

Double_t PndDrcReco::fSeparation[2]
private

Definition at line 122 of file PndDrcReco.h.

Referenced by Finish(), and Init().

TSpectrum* PndDrcReco::fSpect
private

Definition at line 101 of file PndDrcReco.h.

Referenced by FindPeak(), and Init().

Double_t PndDrcReco::fSpr[5]
private

Definition at line 122 of file PndDrcReco.h.

Referenced by Finish(), and Init().

Double_t PndDrcReco::fTheta
private

Definition at line 122 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), Exec(), Finish(), Init(), LookUpTable(), and TimeImaging().

Double_t PndDrcReco::fTimeHit
private

Definition at line 107 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), LookUpTable(), and TimeImaging().

Double_t PndDrcReco::fTimeInBar
private

Definition at line 106 of file PndDrcReco.h.

Referenced by DetermineCherenkov(), and Exec().

TTree* PndDrcReco::fTree
private

Definition at line 79 of file PndDrcReco.h.

Referenced by Init().

TTree* PndDrcReco::fTreeOut
private

Definition at line 80 of file PndDrcReco.h.

Referenced by Finish(), and Init().

Int_t PndDrcReco::fVerbose
private

Definition at line 93 of file PndDrcReco.h.

Referenced by Exec(), and FindPeak().

Int_t PndDrcReco::nevents
private

Definition at line 94 of file PndDrcReco.h.

Referenced by Exec(), and Init().


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