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),
31 // Default constructor
32 fEvMult = new TH1D("EvMult", "Event Multiplicity", 5001, -0.5, 5000.5);
33 fMultSumPt = new TH2D("EvMultSumPt","Event Multiplicity vs Total pT",5001,-0.5,5000.5,1000,0.0,100.0);
36 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const char *aName):
45 fEstimateTracklets(0),
56 snprintf(name, 200, "EvMult%s", aName);
57 fEvMult = new TH1D(name, "Event Multiplicity", 5001, -0.5, 5000.5);
59 snprintf(name, 200, "NormEvMult%s", aName);
60 fNormEvMult = new TH1D(name, "Normalized Event Multiplicity", 5001, -0.5, 5000.5);
63 snprintf(name, 200, "SPDEvMult%s", aName);
64 fSPDMult = new TH1D(name, "SPD Tracklet Multiplicity", 5001, -0.5, 5000.5);
67 snprintf(name, 200, "EvMultTotPt%s", aName);
68 fMultSumPt = new TH2D(name,"Event Multiplicity vs Total pT",501,-0.5,500.5,1000,0.0,100.0);
72 snprintf(name, 200, "EvMultEstITSTPC%s", aName);
73 fEstimateITSTPC = new TH1D(name, "ITS+TPC Multiplicity Estimate", 5001, -0.5, 5000.5);
75 snprintf(name, 200, "EvMultEstTracklets%s", aName);
76 fEstimateTracklets = new TH1D(name, "Tracklets Multiplicity Estimate", 5001, -0.5, 5000.5);
78 snprintf(name, 200, "EvMultEstITSPure%s", aName);
79 fEstimateITSPure = new TH1D(name, "ITS Pure Multiplicity Estimate", 8001, -0.5, 8000.5);
81 snprintf(name, 200, "EstITSTPCEstTracklet%s", aName);
82 fEst1Est2 = new TH2D(name,"ITS+TPC vs Tracklets",501,-0.5,5000.5,501,-0.5,500.5);
84 snprintf(name, 200, "EstITSTPCEstITSPure%s", aName);
85 fEst1Est3 = new TH2D(name,"ITS+TPC vs ITS Pure",501,-0.5,5000.5,801,-0.5,8000.5);
87 snprintf(name, 200, "EstTrackletEstITSPure%s", aName);
88 fEst2Est3 = new TH2D(name,"Tracklets vs ITS Pure",501,-0.5,5000.5,801,-0.5,8000.5);
90 snprintf(name, 200, "EstITSTPCNormMult%s", aName);
91 fEst1Norm = new TH2D(name,"ITS+TPC vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
93 snprintf(name, 200, "EstTrackletsNormMult%s", aName);
94 fEst2Norm = new TH2D(name,"Tracklets vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
96 snprintf(name, 200, "EstITSPureNormMult%s", aName);
97 fEst3Norm = new TH2D(name,"ITS Pure vs Normalized Mult",501,-0.5,5000.5,501,-0.5,5000.5);
102 AliFemtoCutMonitorEventMult::AliFemtoCutMonitorEventMult(const AliFemtoCutMonitorEventMult &aCut):
103 AliFemtoCutMonitor(),
111 fEstimateTracklets(0),
121 if (fEvMult) delete fEvMult;
122 fEvMult = new TH1D(*aCut.fEvMult);
124 if (fNormEvMult) delete fNormEvMult;
125 fNormEvMult = new TH1D(*aCut.fNormEvMult);
129 if (fSPDMult) delete fSPDMult;
130 fSPDMult = new TH1D(*aCut.fSPDMult);
133 if (fMultSumPt) delete fMultSumPt;
134 fMultSumPt = new TH2D(*aCut.fMultSumPt);
139 if (fEstimateITSTPC) delete fEstimateITSTPC;
140 fEstimateITSTPC = new TH1D(*aCut.fEstimateITSTPC);
142 if (fEstimateTracklets) delete fEstimateTracklets;
143 fEstimateTracklets = new TH1D(*aCut.fEstimateTracklets);
145 if (fEstimateITSPure) delete fEstimateITSPure;
146 fEstimateITSPure = new TH1D(*aCut.fEstimateITSPure);
148 if (fEst1Est2) delete fEst1Est2;
149 fEst1Est2 = new TH2D(*aCut.fEst1Est2);
151 if (fEst1Est3) delete fEst1Est3;
152 fEst1Est3 = new TH2D(*aCut.fEst1Est3);
154 if (fEst2Est3) delete fEst2Est3;
155 fEst2Est3 = new TH2D(*aCut.fEst2Est3);
157 if (fEst1Norm) delete fEst1Norm;
158 fEst1Norm = new TH2D(*aCut.fEst1Norm);
160 if (fEst2Norm) delete fEst2Norm;
161 fEst2Norm = new TH2D(*aCut.fEst2Norm);
163 if (fEst3Norm) delete fEst3Norm;
164 fEst3Norm = new TH2D(*aCut.fEst3Norm);
168 AliFemtoCutMonitorEventMult::~AliFemtoCutMonitorEventMult()
180 delete fEstimateITSTPC;
181 delete fEstimateTracklets;
182 delete fEstimateITSPure;
192 AliFemtoCutMonitorEventMult& AliFemtoCutMonitorEventMult::operator=(const AliFemtoCutMonitorEventMult& aCut)
194 // assignment operator
198 if (fEvMult) delete fEvMult;
199 fEvMult = new TH1D(*aCut.fEvMult);
201 if (fNormEvMult) delete fNormEvMult;
202 fNormEvMult = new TH1D(*aCut.fNormEvMult);
205 if (fSPDMult) delete fSPDMult;
206 fSPDMult = new TH1D(*aCut.fSPDMult);
209 if (fMultSumPt) delete fMultSumPt;
210 fMultSumPt = new TH2D(*aCut.fMultSumPt);
215 if (fEstimateITSTPC) delete fEstimateITSTPC;
216 fEstimateITSTPC = new TH1D(*aCut.fEstimateITSTPC);
218 if (fEstimateTracklets) delete fEstimateTracklets;
219 fEstimateTracklets = new TH1D(*aCut.fEstimateTracklets);
221 if (fEstimateITSPure) delete fEstimateITSPure;
222 fEstimateITSPure = new TH1D(*aCut.fEstimateITSPure);
224 if (fEst1Est2) delete fEst1Est2;
225 fEst1Est2 = new TH2D(*aCut.fEst1Est2);
227 if (fEst1Est3) delete fEst1Est3;
228 fEst1Est3 = new TH2D(*aCut.fEst1Est3);
230 if (fEst2Est3) delete fEst2Est3;
231 fEst2Est3 = new TH2D(*aCut.fEst2Est3);
233 if (fEst1Norm) delete fEst1Norm;
234 fEst1Norm = new TH2D(*aCut.fEst1Norm);
236 if (fEst2Norm) delete fEst2Norm;
237 fEst2Norm = new TH2D(*aCut.fEst2Norm);
239 if (fEst3Norm) delete fEst3Norm;
240 fEst3Norm = new TH2D(*aCut.fEst3Norm);
246 AliFemtoString AliFemtoCutMonitorEventMult::Report(){
247 // Prepare report from the execution
248 string stemp = "*** AliFemtoCutMonitorEventMult report";
249 AliFemtoString returnThis = stemp;
253 void AliFemtoCutMonitorEventMult::Fill(const AliFemtoEvent* aEvent)
255 // Fill in the monitor histograms with the values from the current track
256 fEvMult->Fill(aEvent->NumberOfTracks());
257 fNormEvMult->Fill(aEvent->UncorrectedNumberOfPrimaries());
259 fSPDMult->Fill(aEvent->SPDMultiplicity());
261 fMultSumPt->Fill(aEvent->UncorrectedNumberOfPrimaries(), aEvent->ZDCEMEnergy());
265 fEstimateITSTPC->Fill(aEvent->MultiplicityEstimateITSTPC());
266 fEstimateTracklets->Fill(aEvent->MultiplicityEstimateTracklets());
267 fEstimateITSPure->Fill(aEvent->MultiplicityEstimateITSPure());
268 fEst1Est2->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->MultiplicityEstimateTracklets());
269 fEst1Est3->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->MultiplicityEstimateITSPure());
270 fEst2Est3->Fill(aEvent->MultiplicityEstimateTracklets(),aEvent->MultiplicityEstimateITSPure());
271 fEst1Norm->Fill(aEvent->MultiplicityEstimateITSTPC(),aEvent->UncorrectedNumberOfPrimaries());
272 fEst2Norm->Fill(aEvent->MultiplicityEstimateTracklets(),aEvent->UncorrectedNumberOfPrimaries());
273 fEst3Norm->Fill(aEvent->MultiplicityEstimateITSPure(),aEvent->UncorrectedNumberOfPrimaries());
278 void AliFemtoCutMonitorEventMult::Write()
280 // Write out the relevant histograms
282 fNormEvMult->Write();
290 fEstimateITSTPC->Write();
291 fEstimateTracklets->Write();
292 fEstimateITSPure->Write();
303 TList *AliFemtoCutMonitorEventMult::GetOutputList()
305 TList *tOutputList = new TList();
306 tOutputList->Add(fEvMult);
307 tOutputList->Add(fNormEvMult);
308 tOutputList->Add(fSPDMult);
309 tOutputList->Add(fMultSumPt);
313 tOutputList->Add(fEstimateITSTPC);
314 tOutputList->Add(fEstimateTracklets);
315 tOutputList->Add(fEstimateITSPure);
316 tOutputList->Add(fEst1Est2);
317 tOutputList->Add(fEst1Est3);
318 tOutputList->Add(fEst2Est3);
319 tOutputList->Add(fEst1Norm);
320 tOutputList->Add(fEst2Norm);
321 tOutputList->Add(fEst3Norm);
327 void AliFemtoCutMonitorEventMult::SetReadMC(Bool_t mc)
332 void AliFemtoCutMonitorEventMult::AdditionalMultHistsOn(Bool_t addhists)