]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoBasicTrackCut.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoBasicTrackCut.cxx
CommitLineData
76ce4b5b 1////////////////////////////////////////////////////////////////////////////////
2// //
3// AliFemtoBasicTrackCut - the basic cut for tracks. //
4// Cuts on particle identification, transverse momentum, rapidity, distance //
5// of closest approach to primary vertex and charge //
6// //
7////////////////////////////////////////////////////////////////////////////////
8
9#include "AliFemtoBasicTrackCut.h"
10#include <cstdio>
11
12#ifdef __ROOT__
13ClassImp(AliFemtoBasicTrackCut)
14#endif
15
16AliFemtoBasicTrackCut::AliFemtoBasicTrackCut():
17 fCharge(0),
18 fNTracksPassed(0),
19 fNTracksFailed(0)
20{
21 // Default constructor
22 fNTracksPassed = fNTracksFailed = 0;
23 fCharge = 1; // takes both charges 0
24 fNSigmaPion[0] = -100.0; fNSigmaPion[1] = 100.0;
25 fNSigmaKaon[0] = -100.0; fNSigmaKaon[1] = 100.0;
26 fNSigmaProton[0] = -100.0; fNSigmaProton[1] = 100.0;
27 fNHits[0] = 10; fNHits[1] = 180;
28 fPt[0]=0.0; fPt[1] = 100.0;//100
29 fRapidity[0]=-2; fRapidity[1]=2;//-2 2
30 fDCA[0] = -1.0; fDCA[1] = 20.0;
31
32}
33//------------------------------
34//AliFemtoBasicTrackCut::~AliFemtoBasicTrackCut(){
35// /* noop */
36//}
37//------------------------------
38bool AliFemtoBasicTrackCut::Pass(const AliFemtoTrack* track){
39 // test the particle and return
40 // true if it meets all the criteria
41 // false if it doesn't meet at least one of the criteria
42
43 // return true ; // THIS CUT IS A STHBTDUMMY!!
44
45 /*
46 cout << endl;
47 cout << "#track " << trackCount++;
48 cout << " * pion " << (track->NSigmaPion() > fNSigmaPion[0]) && (track->NSigmaPion() < fNSigmaPion[1]);
49 cout << " * kaon " << (track->NSigmaKaon() > fNSigmaKaon[0]) && (track->NSigmaKaon() < fNSigmaKaon[1]);
50 cout << " * proton " << (track->NSigmaProton() > fNSigmaProton[0]) && (track->NSigmaProton() < fNSigmaProton[1]);
51 cout << " * charge " << (track->Charge() == fCharge);
52 */
53 bool goodPID = 1;
54 /* ----- NOT DOING PID CUTS !!!! ------
55 bool goodPID = ((track->NSigmaPion() > fNSigmaPion[0]) &&
56 (track->NSigmaPion() < fNSigmaPion[1]) &&
57 (track->NSigmaKaon() > fNSigmaKaon[0]) &&
58 (track->NSigmaKaon() < fNSigmaKaon[1]) &&
59 (track->NSigmaProton() > fNSigmaProton[0]) &&
60 (track->NSigmaProton() < fNSigmaProton[1]));
61 ----- NOT DOING PID CUTS !!!! ------ */
62 if (fCharge !=0){ // if user requests "charge=0" then that means ignore charge
63 goodPID = (goodPID&&(track->Charge() == fCharge));
64 }
65 if (goodPID){
66 float tEnergy = ::sqrt(track->P().Mag2()+fMass*fMass);
67 float tRapidity = 0.5*::log((tEnergy+track->P().z())/
68 (tEnergy-track->P().z()));
69
70 float tPt = ::sqrt((track->P().x())*(track->P().x())+
71 (track->P().y())*(track->P().y()));
72
73
74 /*
75 cout << " * DCAxy " << (track->DCAxy() > fDCA[0]) && (track->DCAxy() < fDCA[1]);
76 cout << " * fDCA[0] " << fDCA[0];
77 cout << " * fDCA[1] " << fDCA[1];
78 cout << " * track->DCAxy " << track->DCAxy();
79 cout << " * NHits " << (track->NHits() > fNHits[0]) && (track->NHits() < fNHits[1]);
80 cout << " * tPt " << (tPt > fPt[0]) && (tPt < fPt[1]);
81 cout << " * y " << (tRapidity > fRapidity[0]) && (tRapidity < fRapidity[1]);
82 cout << endl;
83 */
84
85 bool goodTrack=
86 (//(track->DCAxy() > fDCA[0]) &&
87 // (track->DCAxy() < fDCA[1]) &&
88 // (track->NHits() > fNHits[0]) &&
89 // (track->NHits() < fNHits[1]) &&
90 (tPt > fPt[0]) &&
91 (tPt < fPt[1]) &&
92 (tRapidity > fRapidity[0]) &&
93 (tRapidity < fRapidity[1]));
94 // &&
95 // (track->PidProbPion()>0.5)&&//moje
96 // (track->PidProbMuon()<0.47)&&//moje
97 // (track->Label()>0);//moje
98
99 // cout << track->DCAxy() << " " << track->NHits() << " " << Pt << " " << tRapidity << " " << tEnergy << endl;
100
101 goodTrack ? fNTracksPassed++ : fNTracksFailed++;
102 return (goodTrack);
103 }
104 else{
105 fNTracksFailed++;
106 return (goodPID);
107 }
108}
109//------------------------------
110AliFemtoString AliFemtoBasicTrackCut::Report(){
111 // construct report
112 string tStemp;
113 char tCtemp[100];
114 snprintf(tCtemp , 100, "Particle mass:\t%E\n",this->Mass());
115 tStemp=tCtemp;
116 snprintf(tCtemp , 100, "Particle charge:\t%d\n",fCharge);
117 tStemp=tCtemp;
118 snprintf(tCtemp , 100, "Particle Nsigma from pion:\t%E - %E\n",fNSigmaPion[0],fNSigmaPion[1]);
119 tStemp+=tCtemp;
120 snprintf(tCtemp , 100, "Particle Nsigma from kaon:\t%E - %E\n",fNSigmaKaon[0],fNSigmaKaon[1]);
121 tStemp+=tCtemp;
122 snprintf(tCtemp , 100, "Particle Nsigma from proton:\t%E - %E\n",fNSigmaProton[0],fNSigmaProton[1]);
123 tStemp+=tCtemp;
124 snprintf(tCtemp , 100, "Particle #hits:\t%d - %d\n",fNHits[0],fNHits[1]);
125 tStemp+=tCtemp;
126 snprintf(tCtemp , 100, "Particle pT:\t%E - %E\n",fPt[0],fPt[1]);
127 tStemp+=tCtemp;
128 snprintf(tCtemp , 100, "Particle rapidity:\t%E - %E\n",fRapidity[0],fRapidity[1]);
129 tStemp+=tCtemp;
130 snprintf(tCtemp , 100, "Particle DCA:\t%E - %E\n",fDCA[0],fDCA[1]);
131 tStemp+=tCtemp;
132 snprintf(tCtemp , 100, "Number of tracks which passed:\t%ld Number which failed:\t%ld\n",fNTracksPassed,fNTracksFailed);
133 tStemp += tCtemp;
134 AliFemtoString returnThis = tStemp;
135 return returnThis;
136}
137
138TList *AliFemtoBasicTrackCut::ListSettings()
139{
140 // return a list of settings in a writable form
141 TList *tListSetttings = new TList();
142 char buf[200];
143 snprintf(buf, 200, "AliFemtoBasicTrackCut.mass=%f", this->Mass());
144 tListSetttings->AddLast(new TObjString(buf));
145
146 snprintf(buf, 200, "AliFemtoBasicTrackCut.charge=%i", fCharge);
147 tListSetttings->AddLast(new TObjString(buf));
148 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmapion.minimum=%f", fNSigmaPion[0]);
149 tListSetttings->AddLast(new TObjString(buf));
150 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmapion.maximum=%f", fNSigmaPion[1]);
151 tListSetttings->AddLast(new TObjString(buf));
152 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmakaon.minimum=%f", fNSigmaKaon[0]);
153 tListSetttings->AddLast(new TObjString(buf));
154 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmakaon.maximum=%f", fNSigmaKaon[1]);
155 tListSetttings->AddLast(new TObjString(buf));
156 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmaproton.minimum=%f", fNSigmaProton[0]);
157 tListSetttings->AddLast(new TObjString(buf));
158 snprintf(buf, 200, "AliFemtoBasicTrackCut.nsigmaproton.maximum=%f", fNSigmaProton[1]);
159 tListSetttings->AddLast(new TObjString(buf));
160 snprintf(buf, 200, "AliFemtoBasicTrackCut.nhits.minimum=%i", fNHits[0]);
161 tListSetttings->AddLast(new TObjString(buf));
162 snprintf(buf, 200, "AliFemtoBasicTrackCut.nhits.maximum=%i", fNHits[1]);
163 tListSetttings->AddLast(new TObjString(buf));
164 snprintf(buf, 200, "AliFemtoBasicTrackCut.pt.minimum=%f", fPt[0]);
165 tListSetttings->AddLast(new TObjString(buf));
166 snprintf(buf, 200, "AliFemtoBasicTrackCut.pt.maximum=%f", fPt[1]);
167 tListSetttings->AddLast(new TObjString(buf));
168 snprintf(buf, 200, "AliFemtoBasicTrackCut.rapidity.minimum=%f", fRapidity[0]);
169 tListSetttings->AddLast(new TObjString(buf));
170 snprintf(buf, 200, "AliFemtoBasicTrackCut.rapidity.maximum=%f", fRapidity[1]);
171 tListSetttings->AddLast(new TObjString(buf));
172 snprintf(buf, 200, "AliFemtoBasicTrackCut.dca.minimum=%f", fDCA[0]);
173 tListSetttings->AddLast(new TObjString(buf));
174 snprintf(buf, 200, "AliFemtoBasicTrackCut.dca.maximum=%f", fDCA[1]);
175 tListSetttings->AddLast(new TObjString(buf));
176
177 return tListSetttings;
178}