1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoCutMonitorParticlePID - the cut monitor for particles to study //
4 // various aspects of the PID determination //
6 ////////////////////////////////////////////////////////////////////////////////
7 #include "AliFemtoCutMonitorParticlePID.h"
8 #include "AliFemtoModelHiddenInfo.h"
14 AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID():
22 // Default constructor
23 fTPCdEdx = new TH2D("TPCdEdx", "TPC dEdx vs. transverse momentum", 100, 0.0, 5.0, 250, 0.0, 500.0);
24 fTOFTime = new TH2D("TOFTime", "TOF Time vs. transverse momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
25 fTOFNSigma = new TH2D("TOFNSigma","TOF NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
26 fTPCNSigma = new TH2D("TPCNSigma","TPC NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
27 fTPCTOFNSigma = new TH2D("TPCTOFNSigma","TPC & TOF NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
31 AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const char *aName, Int_t aTOFParticle):
34 fTOFParticle(aTOFParticle),
42 snprintf(name, 200, "TPCdEdx%s", aName);
43 fTPCdEdx = new TH2D(name, "TPC dEdx vs. transverse momentum", 100, 0.0, 6.0, 250, 0.0, 500.0);
45 snprintf(name, 200, "TOFTime%s", aName);
46 fTOFTime = new TH2D(name, "TOF Time vs. transverse momentum", 100, 0.1, 5.0, 400, -4000.0, 4000.0);
48 snprintf(name, 200, "TOFNSigma%s", aName);
49 fTOFNSigma = new TH2D(name,"TOF NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
51 snprintf(name, 200, "TPCNSigma%s", aName);
52 fTPCNSigma = new TH2D(name,"TPC NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, -5.0, 5.0);
54 snprintf(name, 200, "TPCTOFNSigma%s", aName);
55 fTPCTOFNSigma = new TH2D(name,"TPC & TOF NSigma vs. transverse momentum", 100, 0.0, 5.0, 100, 0.0, 10.0);
59 AliFemtoCutMonitorParticlePID::AliFemtoCutMonitorParticlePID(const AliFemtoCutMonitorParticlePID &aCut):
70 if (fTPCdEdx) delete fTPCdEdx;
71 fTPCdEdx = new TH2D(*aCut.fTPCdEdx);
73 if (fTOFTime) delete fTOFTime;
74 fTOFTime = new TH2D(*aCut.fTOFTime);
76 if (fTOFNSigma) delete fTOFNSigma;
77 fTOFNSigma= new TH2D(*aCut.fTOFNSigma);
79 if (fTPCNSigma) delete fTPCNSigma;
80 fTPCNSigma= new TH2D(*aCut.fTPCNSigma);
82 if (fTPCTOFNSigma) delete fTPCTOFNSigma;
83 fTPCTOFNSigma= new TH2D(*aCut.fTPCTOFNSigma);
86 AliFemtoCutMonitorParticlePID::~AliFemtoCutMonitorParticlePID()
97 AliFemtoCutMonitorParticlePID& AliFemtoCutMonitorParticlePID::operator=(const AliFemtoCutMonitorParticlePID& aCut)
99 // assignment operator
103 if (fTPCdEdx) delete fTPCdEdx;
104 fTPCdEdx = new TH2D(*aCut.fTPCdEdx);
106 if (fTOFTime) delete fTOFTime;
107 fTOFTime = new TH2D(*aCut.fTOFTime);
109 if(fTOFNSigma) delete fTOFNSigma;
110 fTOFNSigma = new TH2D(*aCut.fTOFNSigma);
112 if(fTPCNSigma) delete fTPCNSigma;
113 fTPCNSigma = new TH2D(*aCut.fTPCNSigma);
115 if(fTPCTOFNSigma) delete fTPCTOFNSigma;
116 fTPCTOFNSigma = new TH2D(*aCut.fTPCTOFNSigma);
121 AliFemtoString AliFemtoCutMonitorParticlePID::Report(){
122 // Prepare report from the execution
123 string stemp = "*** AliFemtoCutMonitorParticlePID report";
124 AliFemtoString returnThis = stemp;
128 void AliFemtoCutMonitorParticlePID::Fill(const AliFemtoTrack* aTrack)
130 // Fill in the monitor histograms with the values from the current track
131 float tMom = aTrack->P().Mag();
132 float tdEdx = aTrack->TPCsignal();
134 // short tchg = aTrack->Charge();
135 if (fTOFParticle == 0) tTOF = aTrack->TOFpionTime();
136 if (fTOFParticle == 1) tTOF = aTrack->TOFkaonTime();
137 if (fTOFParticle == 2) tTOF = aTrack->TOFprotonTime();
139 fTPCdEdx->Fill(tMom, tdEdx);
140 fTOFTime->Fill(tMom, tTOF);
142 // float vp= aTrack->VTOF();
144 // fTOFTime->Fill(tMom, tTOF);
145 // if (fTOFParticle == 0) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFPi());
146 // if (fTOFParticle == 1) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFK());
147 // if (fTOFParticle == 2) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFP());
150 if (fTOFParticle == 0) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFPi());
151 if (fTOFParticle == 1) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFK());
152 if (fTOFParticle == 2) fTOFNSigma->Fill(tMom, aTrack->NSigmaTOFP());
154 if (fTOFParticle == 0) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCPi());
155 if (fTOFParticle == 1) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCK());
156 if (fTOFParticle == 2) fTPCNSigma->Fill(tMom, aTrack->NSigmaTPCP());
158 if (fTOFParticle == 0) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCPi(), aTrack->NSigmaTOFPi() )/TMath::Sqrt(2) );
159 if (fTOFParticle == 1) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCK(), aTrack->NSigmaTOFK() )/TMath::Sqrt(2) );
160 if (fTOFParticle == 2) fTPCTOFNSigma->Fill(tMom, TMath::Hypot( aTrack->NSigmaTPCP(), aTrack->NSigmaTOFP() )/TMath::Sqrt(2) );
164 void AliFemtoCutMonitorParticlePID::Write()
166 // Write out the relevant histograms
171 fTPCTOFNSigma->Write();
175 TList *AliFemtoCutMonitorParticlePID::GetOutputList()
177 TList *tOutputList = new TList();
178 tOutputList->Add(fTPCdEdx);
179 tOutputList->Add(fTOFTime);
180 tOutputList->Add(fTOFNSigma);
181 tOutputList->Add(fTPCNSigma);
182 tOutputList->Add(fTPCTOFNSigma);