]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDG.cxx
Herwig event header.
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemtoUser / AliFemtoCutMonitorParticlePtPDG.cxx
CommitLineData
3d5f4b02 1////////////////////////////////////////////////////////////////////////////////
2// //
3// AliFemtoCutMonitorParticlePtPDG - the cut monitor for particles to study //
4// the difference between reconstructed and true momentum //
5// //
6////////////////////////////////////////////////////////////////////////////////
7#include "AliFemtoCutMonitorParticlePtPDG.h"
8#include "AliFemtoModelHiddenInfo.h"
9#include <TH1D.h>
10#include <TH2D.h>
11#include <TList.h>
12#include <TMath.h>
13
14AliFemtoCutMonitorParticlePtPDG::AliFemtoCutMonitorParticlePtPDG():
15 fPtPDG(0),ftpcHist(0),fPtGoodPi(0),fPtFakePi(0),fPtGoodK(0),fPtFakeK(0),
16 fPtGoodP(0),fPtFakeP(0),fPtRPi(0),fPtRK(0),fPtRP(0),
17 fPtContP(0),
18 fPtContPi(0),
19 fPtContMup(0),
20 fPtContElp(0),
21 fMass(0.13957)
22{
23 // Default constructor
24 fPtPDG = new TH2D("PtPDG", "PDG vs Pt", 5, .0, 5.0, 100, 0.1, 2.0);
25 ftpcHist=new TH2D("tpcHist","TPC dE/dX vs momentum",100,0.1,2.7,100,0.,6.);
26 fPtGoodPi = new TH1D("PtGoodPi", "good pions Pt", 100, 0.1, 2.0);
27 fPtRPi = new TH1D("PtRPi", "right pdg pions Pt", 100, 0.1, 2.0);
28 fPtFakePi = new TH1D("PtFakePi", "fake pions Pt", 100, 0.1, 2.0);
29 fPtGoodK = new TH1D("PtGoodK", "good kaons Pt", 100, 0.1, 2.0);
30 fPtRK = new TH1D("PtRK", "right pdg kaons Pt", 100, 0.1, 2.0);
31 fPtFakeK = new TH1D("PtFakeK", "fake kaons Pt", 100, 0.1, 2.0);
32 fPtGoodP = new TH1D("PtGoodP", "good protons Pt", 100, 0.1, 2.0);
33 fPtFakeP = new TH1D("PtFakeP", "fake protons Pt", 100, 0.1, 2.0);
34 fPtRP = new TH1D("PtRP", "right pdg protons Pt", 100, 0.1, 2.0);
35
36 fPtContP = new TH1D("PtContP", "contamination Pt", 100, 0.1, 2.0);
37 fPtContPi = new TH1D("PtContPi", "contamination Pt", 100, 0.1, 2.0);
38 fPtContMup = new TH1D("PtContMup", "contamination Pt", 100, 0.1, 2.0);
39 fPtContElp = new TH1D("PtContElp", "contamination Pt", 100, 0.1, 2.0);
40
41}
42
43AliFemtoCutMonitorParticlePtPDG::AliFemtoCutMonitorParticlePtPDG(const char *aName, float aMass):
44 AliFemtoCutMonitor(),
45 fPtPDG(0),ftpcHist(0),fPtGoodPi(0),fPtFakePi(0),fPtGoodK(0),fPtFakeK(0),
46 fPtGoodP(0),fPtFakeP(0),fPtRPi(0),fPtRK(0),fPtRP(0),
47 fPtContP(0),
48 fPtContPi(0),
49 fPtContMup(0),
50 fPtContElp(0),
51 fMass(aMass)
52{
53 // Normal constructor
54 char name[200];
55 snprintf(name, 200, "PtPDG%s", aName);
56 fPtPDG = new TH2D(name, "PDG vs Pt", 10, 0.0, 5.0, 100, 0.1, 2.0);
57 snprintf(name, 200, "tpcHist%s", aName);
58 ftpcHist=new TH2D(name,"TPC dE/dX vs momentum",100,0.1,2.7,100,0.,6.);
59 snprintf(name, 200, "PtGoodPi%s", aName);
60 fPtGoodPi = new TH1D(name, "good pions Pt", 100, 0.1, 2.0);
61 snprintf(name, 200, "PtFakePi%s", aName);
62 fPtFakePi = new TH1D(name, "fake pions Pt", 100, 0.1, 2.0);
63 snprintf(name, 200, "PtRPi%s", aName);
64 fPtRPi = new TH1D(name, "right pdg pions Pt", 100, 0.1, 2.0);
65 snprintf(name, 200, "PtGoodK%s", aName);
66 fPtGoodK = new TH1D(name, "good kaons Pt", 100, 0.1, 2.0);
67 snprintf(name, 200, "PtFakeK%s", aName);
68 fPtFakeK = new TH1D(name, "fake kaons Pt", 100, 0.1, 2.0);
69 snprintf(name, 200, "PtRK%s", aName);
70 fPtRK = new TH1D(name, "right pdg kaons Pt", 100, 0.1, 2.0);
71 snprintf(name, 200, "PtGoodP%s", aName);
72 fPtGoodP = new TH1D(name, "good protons Pt", 100, 0.1, 2.0);
73 snprintf(name, 200, "PtFakeP%s", aName);
74 fPtFakeP = new TH1D(name, "fake protons Pt", 100, 0.1, 2.0);
75 snprintf(name, 200, "PtRP%s", aName);
76 fPtRP = new TH1D(name, "right pdg protons Pt", 100, 0.1, 2.0);
77
78 snprintf(name, 200, "PtContP%s", aName);
79 fPtContP = new TH1D(name, "contamination", 100, 0.1, 2.0);
80 snprintf(name, 200, "PtContPi%s", aName);
81 fPtContPi = new TH1D(name, "contamination", 100, 0.1, 2.0);
82 snprintf(name, 200, "PtContMup%s", aName);
83 fPtContMup = new TH1D(name, "contamination", 100, 0.1, 2.0);
84 snprintf(name, 200, "PtContElp%s", aName);
85 fPtContElp = new TH1D(name, "contamination", 100, 0.1, 2.0);
86
87}
88
89AliFemtoCutMonitorParticlePtPDG::AliFemtoCutMonitorParticlePtPDG(const AliFemtoCutMonitorParticlePtPDG &aCut):
90 AliFemtoCutMonitor(),
91 fPtPDG(0),ftpcHist(0),fPtGoodPi(0),fPtFakePi(0),fPtGoodK(0),fPtFakeK(0),
92 fPtGoodP(0),fPtFakeP(0),fPtRPi(0),fPtRK(0),fPtRP(0),
93 fPtContP(0),
94 fPtContPi(0),
95 fPtContMup(0),
96 fPtContElp(0),
97 fMass(0.13957)
98{
99 // copy constructor
100 if (fPtPDG) delete fPtPDG;
101 fPtPDG = new TH2D(*aCut.fPtPDG);
102 ftpcHist= new TH2D(*aCut.ftpcHist);
103 fPtGoodPi= new TH1D(*aCut.fPtGoodPi);
104 fPtFakePi= new TH1D(*aCut.fPtFakePi);
105 fPtGoodK= new TH1D(*aCut.fPtGoodK);
106 fPtFakeK= new TH1D(*aCut.fPtFakePi);
107 fPtGoodP= new TH1D(*aCut.fPtGoodP);
108 fPtFakeP= new TH1D(*aCut.fPtFakePi);
109 fPtRPi= new TH1D(*aCut.fPtRPi);
110 fPtRK= new TH1D(*aCut.fPtRK);
111 fPtRP= new TH1D(*aCut.fPtRP);
112
113 fPtContP= new TH1D(*aCut.fPtContP);
114 fPtContPi= new TH1D(*aCut.fPtContPi);
115 fPtContMup= new TH1D(*aCut.fPtContMup);
116 fPtContElp= new TH1D(*aCut.fPtContElp);
117
118 fMass = aCut.fMass;
119}
120
121AliFemtoCutMonitorParticlePtPDG::~AliFemtoCutMonitorParticlePtPDG()
122{
123 // Destructor
124 delete fPtPDG;
125 delete ftpcHist;
126 delete fPtGoodPi;
127 delete fPtFakePi;
128 delete fPtGoodK;
129 delete fPtFakeK;
130 delete fPtGoodP;
131 delete fPtFakeP;
132 delete fPtRPi;
133 delete fPtRK;
134 delete fPtRP;
135
136 delete fPtContP;
137 delete fPtContPi;
138 delete fPtContMup;
139 delete fPtContElp;
140
141}
142
143AliFemtoCutMonitorParticlePtPDG& AliFemtoCutMonitorParticlePtPDG::operator=(const AliFemtoCutMonitorParticlePtPDG& aCut)
144{
145 // assignment operator
146 if (this == &aCut)
147 return *this;
148
149 if (fPtPDG) delete fPtPDG;
150 fPtPDG = new TH2D(*aCut.fPtPDG);
151
152 if (ftpcHist) delete ftpcHist;
153 ftpcHist = new TH2D(*aCut.ftpcHist);
154
155 if (fPtGoodPi) delete fPtGoodPi;
156 fPtGoodPi = new TH1D(*aCut.fPtGoodPi);
157
158 if (fPtFakePi) delete fPtFakePi;
159 fPtFakePi = new TH1D(*aCut.fPtFakePi);
160
161 if (fPtRPi) delete fPtRPi;
162 fPtRPi = new TH1D(*aCut.fPtRPi);
163
164 if (fPtGoodK) delete fPtGoodK;
165 fPtGoodK = new TH1D(*aCut.fPtGoodK);
166
167 if (fPtFakeK) delete fPtFakeK;
168 fPtFakeK = new TH1D(*aCut.fPtFakeK);
169
170 if (fPtRK) delete fPtRK;
171 fPtRK = new TH1D(*aCut.fPtRK);
172
173 if (fPtGoodP) delete fPtGoodP;
174 fPtGoodP = new TH1D(*aCut.fPtGoodP);
175
176 if (fPtFakeP) delete fPtFakeP;
177 fPtFakeP = new TH1D(*aCut.fPtFakeP);
178
179 if (fPtRP) delete fPtRP;
180 fPtRP = new TH1D(*aCut.fPtRP);
181
182 if (fPtContP) delete fPtContP;
183 fPtContP = new TH1D(*aCut.fPtContP);
184
185 if (fPtContPi) delete fPtContPi;
186 fPtContPi = new TH1D(*aCut.fPtContPi);
187
188 if (fPtContMup) delete fPtContMup;
189 fPtContMup = new TH1D(*aCut.fPtContMup);
190
191 if (fPtContElp) delete fPtContElp;
192 fPtContElp = new TH1D(*aCut.fPtContElp);
193
194 return *this;
195}
196
197AliFemtoString AliFemtoCutMonitorParticlePtPDG::Report(){
198 // Prepare report from the execution
199 string stemp = "*** AliFemtoCutMonitorParticlePtPDG report";
200 AliFemtoString returnThis = stemp;
201 return returnThis;
202}
203
204void AliFemtoCutMonitorParticlePtPDG::Fill(const AliFemtoTrack* aTrack)
205{
206 // Fill in the monitor histograms with the values from the current track
04328c66 207 // float tEnergy = ::sqrt(aTrack->P().mag2()+fMass*fMass);
5e301b78 208 // float tRapidity = 0.5*::log((tEnergy+aTrack->P().z())/(tEnergy-aTrack->P().z()));
3d5f4b02 209 float tPt = ::sqrt((aTrack->P().x())*(aTrack->P().x())+(aTrack->P().y())*(aTrack->P().y()));
5e301b78 210 // float tEta = -TMath::Log(TMath::Tan(aTrack->P().theta()/2.0));
211 // float tPhi = aTrack->P().phi();
3d5f4b02 212 float tP = ::sqrt((aTrack->P().z())*(aTrack->P().z())+(aTrack->P().x())*(aTrack->P().x())+(aTrack->P().y())*(aTrack->P().y()));;
213 float dedx = aTrack->TPCsignalN();
214 float w[10];
215 w[0] = aTrack->PidProbElectron();
216 w[1] = aTrack->PidProbMuon();
217 w[2] = aTrack->PidProbPion();
218 w[3] = aTrack->PidProbKaon();
219 w[4] = aTrack->PidProbProton();
220
221 Int_t pdg1=0;
222 AliFemtoModelHiddenInfo *info = ( AliFemtoModelHiddenInfo *) aTrack->GetHiddenInfo();
223 if(info)pdg1 = info->GetPDGPid();
224
225
226//most probable particle
227 fPtGoodPi->Fill(tPt);
228 fPtGoodP->Fill(tPt);
229 fPtGoodK->Fill(tPt);
230
231//contaminations
232 if (abs(pdg1)!=321)fPtFakeK->Fill(tPt);
233 if (abs(pdg1)!=211)fPtFakePi->Fill(tPt);
234 if (abs(pdg1)!=2212)fPtFakeP->Fill(tPt);
235
236
237//contaminations for kaons
238 if (abs(pdg1)==2212)fPtContP->Fill(tPt);
239 if (abs(pdg1)==211)fPtContPi->Fill(tPt);
240 if (abs(pdg1)==13)fPtContMup->Fill(tPt);
241 if (abs(pdg1)==11)fPtContElp->Fill(tPt);
242
243 Float_t pdg=-1.0;
244 if(abs(pdg1)==211){
245 pdg=2.0;
246 fPtRPi->Fill(tPt);
247 }
248
249 if(abs(pdg1)==321){
250 pdg=3.0;
251 fPtRK->Fill(tPt);
252 }
253
254 if(abs(pdg1)==2212){
255 pdg=4.0;
256 fPtRP->Fill(tPt);
257 }
258
259 if(abs(pdg1)==11)pdg=0.0; //+-electron
260 if(abs(pdg1)==13)pdg=1.0; //+-muon
261
262 //cout<<"pdg from CutMonitor.."<<pdg1<<"pdg"<<pdg<<endl;
263
264
265 fPtPDG->Fill(pdg, tPt);
266 ftpcHist->Fill(tP,dedx);
267
268
269}
270
271void AliFemtoCutMonitorParticlePtPDG::Write()
272{
273 // Write out the relevant histograms
274
275 fPtPDG->Write();
276 ftpcHist->Write();
277 fPtGoodPi->Write();
278 fPtFakePi->Write();
279 fPtGoodK->Write();
280 fPtFakeK->Write();
281 fPtGoodP->Write();
282 fPtFakeP->Write();
283 fPtRPi->Write();
284 fPtRK->Write();
285 fPtRP->Write();
286 fPtContP->Write();
287 fPtContPi->Write();
288 fPtContMup->Write();
289 fPtContElp->Write();
290}
291
292TList *AliFemtoCutMonitorParticlePtPDG::GetOutputList()
293{
294 TList *tOutputList = new TList();
295 tOutputList->Add(fPtPDG);
296 tOutputList->Add(ftpcHist);
297 tOutputList->Add(fPtGoodPi);
298 tOutputList->Add(fPtFakePi);
299 tOutputList->Add(fPtGoodK);
300 tOutputList->Add(fPtFakeK);
301 tOutputList->Add(fPtGoodP);
302 tOutputList->Add(fPtFakeP);
303 tOutputList->Add(fPtRPi);
304 tOutputList->Add(fPtRK);
305 tOutputList->Add(fPtRP);
306
307 tOutputList->Add(fPtContP);
308 tOutputList->Add(fPtContPi);
309 tOutputList->Add(fPtContMup);
310 tOutputList->Add(fPtContElp);
311
312 return tOutputList;
313}