1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoCutMonitorEventMult - the cut monitor for particles to study //
4 // the difference between reconstructed and true momentum //
6 ////////////////////////////////////////////////////////////////////////////////
7 #include "AliFemtoCutMonitorEventMult.h"
8 #include "AliFemtoModelHiddenInfo.h"
9 #include "AliFemtoEvent.h"
14 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult():
22 fEstimateTracklets(0),
32 // Default constructor
33 fEvMult = new TH1D("EvMult", "Event Multiplicity", 5001, -0.5, 5000.5);
34 fMultSumPt = new TH2D("EvMultSumPt","Event Multiplicity vs Total pT",5001,-0.5,5000.5,1000,0.0,100.0);
37 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const char *aName, int nBins):
46 fEstimateTracklets(0),
59 snprintf(name, 200, "EvMult%s", aName);
60 fEvMult = new TH1D(name, "Event Multiplicity", nBins+1, -0.5, 5000.5);
62 snprintf(name, 200, "NormEvMult%s", aName);
63 fNormEvMult = new TH1D(name, "Normalized Event Multiplicity", nBins+1, -0.5, 5000.5);
68 snprintf(name, 200, "SPDEvMult%s", aName);
69 fSPDMult = new TH1D(name, "SPD Tracklet Multiplicity", nBins+1, -0.5, 5000.5);
72 snprintf(name, 200, "EvMultTotPt%s", aName);
73 fMultSumPt = new TH2D(name,"Event Multiplicity vs Total pT",501,-0.5,500.5,1000,0.0,100.0);
79 snprintf(name, 200, "EvMultEstITSTPC%s", aName);
80 fEstimateITSTPC = new TH1D(name, "ITS+TPC Multiplicity Estimate", 5001, -0.5, 5000.5);
82 snprintf(name, 200, "EvMultEstTracklets%s", aName);
83 fEstimateTracklets = new TH1D(name, "Tracklets Multiplicity Estimate", 5001, -0.5, 5000.5);
85 snprintf(name, 200, "EvMultEstITSPure%s", aName);
86 fEstimateITSPure = new TH1D(name, "ITS Pure Multiplicity Estimate", 8001, -0.5, 8000.5);
88 snprintf(name, 200, "EstITSTPCEstTracklet%s", aName);
89 fEst1Est2 = new TH2D(name,"ITS+TPC vs Tracklets",501,-0.5,5000.5,501,-0.5,500.5);
91 snprintf(name, 200, "EstITSTPCEstITSPure%s", aName);
92 fEst1Est3 = new TH2D(name,"ITS+TPC vs ITS Pure",501,-0.5,5000.5,801,-0.5,8000.5);
94 snprintf(name, 200, "EstTrackletEstITSPure%s", aName);
95 fEst2Est3 = new TH2D(name,"Tracklets vs ITS Pure",501,-0.5,5000.5,801,-0.5,8000.5);
97 snprintf(name, 200, "EstITSTPCNormMult%s", aName);
98 fEst1Norm = new TH2D(name,"ITS+TPC vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
100 snprintf(name, 200, "EstTrackletsNormMult%s", aName);
101 fEst2Norm = new TH2D(name,"Tracklets vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
103 snprintf(name, 200, "EstITSPureNormMult%s", aName);
104 fEst3Norm = new TH2D(name,"ITS Pure vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
107 snprintf(name, 200, "PsiEPVZERO%s", aName);
108 fPsiVZERO = new TH1D(name, "event plane angle from vzero", 157, -1.575, 1.565);
111 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const AliFemtoCutMonitorEventMult &aCut):
112 AliFemtoCutMonitor(),
120 fEstimateTracklets(0),
132 if (fEvMult) delete fEvMult;
133 fEvMult = new TH1D(*aCut.fEvMult);
135 if (fNormEvMult) delete fNormEvMult;
136 fNormEvMult = new TH1D(*aCut.fNormEvMult);
141 if (fSPDMult) delete fSPDMult;
142 fSPDMult = new TH1D(*aCut.fSPDMult);
145 if (fMultSumPt) delete fMultSumPt;
146 fMultSumPt = new TH2D(*aCut.fMultSumPt);
151 if (fEstimateITSTPC) delete fEstimateITSTPC;
152 fEstimateITSTPC = new TH1D(*aCut.fEstimateITSTPC);
154 if (fEstimateTracklets) delete fEstimateTracklets;
155 fEstimateTracklets = new TH1D(*aCut.fEstimateTracklets);
157 if (fEstimateITSPure) delete fEstimateITSPure;
158 fEstimateITSPure = new TH1D(*aCut.fEstimateITSPure);
160 if (fEst1Est2) delete fEst1Est2;
161 fEst1Est2 = new TH2D(*aCut.fEst1Est2);
163 if (fEst1Est3) delete fEst1Est3;
164 fEst1Est3 = new TH2D(*aCut.fEst1Est3);
166 if (fEst2Est3) delete fEst2Est3;
167 fEst2Est3 = new TH2D(*aCut.fEst2Est3);
169 if (fEst1Norm) delete fEst1Norm;
170 fEst1Norm = new TH2D(*aCut.fEst1Norm);
172 if (fEst2Norm) delete fEst2Norm;
173 fEst2Norm = new TH2D(*aCut.fEst2Norm);
175 if (fEst3Norm) delete fEst3Norm;
176 fEst3Norm = new TH2D(*aCut.fEst3Norm);
179 if (fPsiVZERO) delete fPsiVZERO;
180 fPsiVZERO = new TH1D(*aCut.fPsiVZERO);
184 AliFemtoCutMonitorEventMult::~AliFemtoCutMonitorEventMult()
197 delete fEstimateITSTPC;
198 delete fEstimateTracklets;
199 delete fEstimateITSPure;
212 AliFemtoCutMonitorEventMult& AliFemtoCutMonitorEventMult::operator=(const AliFemtoCutMonitorEventMult& aCut)
214 // assignment operator
218 if (fEvMult) delete fEvMult;
219 fEvMult = new TH1D(*aCut.fEvMult);
221 if (fNormEvMult) delete fNormEvMult;
222 fNormEvMult = new TH1D(*aCut.fNormEvMult);
225 if (fPsiVZERO) delete fPsiVZERO;
226 fPsiVZERO = new TH1D(*aCut.fPsiVZERO);
229 if (fSPDMult) delete fSPDMult;
230 fSPDMult = new TH1D(*aCut.fSPDMult);
233 if (fMultSumPt) delete fMultSumPt;
234 fMultSumPt = new TH2D(*aCut.fMultSumPt);
239 if (fEstimateITSTPC) delete fEstimateITSTPC;
240 fEstimateITSTPC = new TH1D(*aCut.fEstimateITSTPC);
242 if (fEstimateTracklets) delete fEstimateTracklets;
243 fEstimateTracklets = new TH1D(*aCut.fEstimateTracklets);
245 if (fEstimateITSPure) delete fEstimateITSPure;
246 fEstimateITSPure = new TH1D(*aCut.fEstimateITSPure);
248 if (fEst1Est2) delete fEst1Est2;
249 fEst1Est2 = new TH2D(*aCut.fEst1Est2);
251 if (fEst1Est3) delete fEst1Est3;
252 fEst1Est3 = new TH2D(*aCut.fEst1Est3);
254 if (fEst2Est3) delete fEst2Est3;
255 fEst2Est3 = new TH2D(*aCut.fEst2Est3);
257 if (fEst1Norm) delete fEst1Norm;
258 fEst1Norm = new TH2D(*aCut.fEst1Norm);
260 if (fEst2Norm) delete fEst2Norm;
261 fEst2Norm = new TH2D(*aCut.fEst2Norm);
263 if (fEst3Norm) delete fEst3Norm;
264 fEst3Norm = new TH2D(*aCut.fEst3Norm);
270 AliFemtoString AliFemtoCutMonitorEventMult::Report(){
271 // Prepare report from the execution
272 string stemp = "*** AliFemtoCutMonitorEventMult report";
273 AliFemtoString returnThis = stemp;
277 void AliFemtoCutMonitorEventMult::Fill(const AliFemtoEvent* aEvent)
279 // Fill in the monitor histograms with the values from the current track
280 fEvMult->Fill(aEvent->NumberOfTracks());
281 fNormEvMult->Fill(aEvent->UncorrectedNumberOfPrimaries());
283 double epvzero = aEvent->ReactionPlaneAngle();
285 fPsiVZERO->Fill(epvzero);
289 // fSPDMult->Fill(aEvent->SPDMultiplicity());
291 // fMultSumPt->Fill(aEvent->UncorrectedNumberOfPrimaries(), aEvent->ZDCEMEnergy());
295 // fEstimateITSTPC->Fill(aEvent->MultiplicityEstimateITSTPC());
296 // fEstimateTracklets->Fill(aEvent->MultiplicityEstimateTracklets());
297 // fEstimateITSPure->Fill(aEvent->MultiplicityEstimateITSPure());
298 // fEst1Est2->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->MultiplicityEstimateTracklets());
299 // fEst1Est3->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->MultiplicityEstimateITSPure());
300 // fEst2Est3->Fill(aEvent->MultiplicityEstimateTracklets(),aEvent->MultiplicityEstimateITSPure());
301 // fEst1Norm->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->UncorrectedNumberOfPrimaries());
302 // fEst2Norm->Fill(aEvent->MultiplicityEstimateTracklets(),aEvent->UncorrectedNumberOfPrimaries());
303 // fEst3Norm->Fill(aEvent->MultiplicityEstimateITSPure(),aEvent->UncorrectedNumberOfPrimaries());
308 void AliFemtoCutMonitorEventMult::Write()
310 // Write out the relevant histograms
312 fNormEvMult->Write();
316 // fSPDMult->Write();
318 // fMultSumPt->Write();
322 // fEstimateITSTPC->Write();
323 // fEstimateTracklets->Write();
324 // fEstimateITSPure->Write();
325 // fEst1Est2->Write();
326 // fEst1Est3->Write();
327 // fEst2Est3->Write();
328 // fEst1Norm->Write();
329 // fEst2Norm->Write();
330 // fEst3Norm->Write();
335 TList *AliFemtoCutMonitorEventMult::GetOutputList()
337 TList *tOutputList = new TList();
338 // tOutputList->Add(fEvMult);
339 tOutputList->Add(fNormEvMult);
340 tOutputList->Add(fPsiVZERO);
341 // tOutputList->Add(fSPDMult);
342 // tOutputList->Add(fMultSumPt);
346 // tOutputList->Add(fEstimateITSTPC);
347 // tOutputList->Add(fEstimateTracklets);
348 // tOutputList->Add(fEstimateITSPure);
349 // tOutputList->Add(fEst1Est2);
350 // tOutputList->Add(fEst1Est3);
351 // tOutputList->Add(fEst2Est3);
352 // tOutputList->Add(fEst1Norm);
353 // tOutputList->Add(fEst2Norm);
354 // tOutputList->Add(fEst3Norm);
359 void AliFemtoCutMonitorEventMult::SetReadMC(Bool_t mc)
364 void AliFemtoCutMonitorEventMult::AdditionalMultHistsOn(Bool_t addhists)