]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx
Added quantities for V0 daughters + modified cuts for V0 + modified cuts and train...
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutSetDaughterParticle.cxx
1 //
2 // Author: Francesca Bellini (fbellini@cern.ch)
3 //
4 //
5
6 #include <Riostream.h>
7
8 #include "AliPID.h"
9 #include "AliPIDResponse.h"
10 #include "AliRsnCutSetDaughterParticle.h"
11
12 class AliRsnCutPIDNSigma;
13 class AliRsnPIDRange;
14 class AliRsnCutPhi;
15
16 ClassImp(AliRsnCutSetDaughterParticle)
17
18 //__________________________________________________________________________________________________
19 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
20    AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter),
21    fPID(AliPID::kPion),
22    fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts),
23    fNsigmaTPC(1E20),
24    fNsigmaTOF(1E20),
25    fCutQuality(0x0),
26    fAODTrkCutFilterBit(0)
27 {
28    //
29    // Default constructor
30 }
31
32 //__________________________________________________________________________________________________
33 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
34    AliRsnCutSet(name, AliRsnTarget::kDaughter),
35    fPID(pid),
36    fAppliedCutSetID(cutSetID),
37    fNsigmaTPC(1E20),
38    fNsigmaTOF(1E20),
39    fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
40    fAODTrkCutFilterBit(AODfilterBit)
41 {
42    //
43    // Constructor
44    //
45    if ( (nSigmaFast<=0) &&
46         ((cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma)) ) {
47       AliError("Requested fast n-sigma PID with invalid value for n. Setting n = 1E20");
48    } else {
49       if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) {
50          fNsigmaTPC = nSigmaFast;
51       }
52       if (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma) {
53         fNsigmaTPC = nSigmaFast;
54       }
55       if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) ||
56            (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) {
57          fNsigmaTOF = nSigmaFast;
58       }
59    }
60
61    Init();
62 }
63
64 //__________________________________________________________________________________________________
65 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy) :
66    AliRsnCutSet(copy),
67    fPID(copy.fPID),
68    fAppliedCutSetID(copy.fAppliedCutSetID),
69    fNsigmaTPC(copy.fNsigmaTPC),
70    fNsigmaTOF(copy.fNsigmaTOF),
71    fCutQuality(copy.fCutQuality),
72    fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit)
73 {
74    //
75    // copy constructor
76 }
77
78 //__________________________________________________________________________________________________
79 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle &copy)
80 {
81    //
82    // operator =
83    //
84    AliRsnCutSet::operator=(copy);
85    if (this == &copy)
86       return *this;
87    fPID=copy.fPID;
88    fAppliedCutSetID=copy.fAppliedCutSetID;
89    fNsigmaTPC=copy.fNsigmaTPC;
90    fNsigmaTOF=copy.fNsigmaTOF;
91    fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
92    fCutQuality=copy.fCutQuality;
93    return (*this);
94 }
95
96 //----------------------------------------------------------------------------
97 AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
98 {
99    //
100    //destructor
101    //
102    if (fCutQuality)
103       delete fCutQuality;
104 }
105 //----------------------------------------------------------------------------
106 void AliRsnCutSetDaughterParticle::Init()
107 {
108    //
109    // init cut sets by setting variable params
110    //
111    fCutQuality->SetDefaults2010();
112    fCutQuality->SetPtRange(0.15, 20.0);
113    fCutQuality->SetEtaRange(-0.8, 0.8);
114    fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
115    fCutQuality->SetDCAZmax(2.0);
116    fCutQuality->SetSPDminNClusters(1);
117    fCutQuality->SetITSminNClusters(0);
118    fCutQuality->SetITSmaxChi2(36);
119    fCutQuality->SetTPCminNClusters(70);
120    fCutQuality->SetTPCmaxChi2(4.0);
121    fCutQuality->SetRejectKinkDaughters();
122    fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
123    //fCutQuality->SetITSmaxChi2(36);
124    //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
125
126    AliRsnCutTOFMatch  *iCutTOFMatch     = new AliRsnCutTOFMatch("CutTOFMatch");
127    AliRsnCutPIDNSigma *iCutTPCNSigma    = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
128    AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
129    AliRsnCutPIDNSigma *iCutTOFNSigma    = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
130    AliRsnCutPhi  *iCutPhiTRD2010        = new AliRsnCutPhi("CutPhiTRD2010","InTRD");
131    AliRsnCutPhi  *iCutPhiNoTRD2010      = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD");
132    
133    switch (fAppliedCutSetID)
134    {
135       case AliRsnCutSetDaughterParticle::kNoCuts :
136          AliInfo("No cuts applied to daughter particle");
137          break;
138
139       case AliRsnCutSetDaughterParticle::kQualityStd2010 :
140          AddCut(fCutQuality);
141          SetCutScheme(fCutQuality->GetName());
142          break;
143
144       case AliRsnCutSetDaughterParticle::kQualityStd2011:
145          //fCutQuality->SetAODTestFilterBit(10);     //1024
146          AddCut(fCutQuality);
147          SetCutScheme(fCutQuality->GetName());
148          break;
149
150       case AliRsnCutSetDaughterParticle::kTOFMatch :
151          AddCut(fCutQuality);
152          AddCut(iCutTOFMatch);
153          SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
154          break;
155
156       case    AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
157          if (fNsigmaTPC <= 0.0) {
158             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
159             SetNsigmaForFastTPCpid(10.0);
160          }
161          iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
162          AddCut(fCutQuality);
163          AddCut(iCutTPCNSigma);
164          SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
165          break;
166
167       case    AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
168          if (fNsigmaTOF <= 0.0) {
169             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
170             SetNsigmaForFastTOFpid(10.0);
171          }
172          iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
173          //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
174          AddCut(fCutQuality);
175          AddCut(iCutTOFNSigma);
176          SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
177          break;
178
179       case    AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
180          /* Set TPC  PID (if no TOF)*/
181          // all   below   350         MeV: 5sigma
182          // all   between 350 and 500 MeV: 3sigma
183          // pios above   500         MeV: 2sigma
184          // kaons between 500 and 700 MeV: 2sigma
185          // kaons above   700         MeV: rejected
186          iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
187          iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
188          if (fPID==AliPID::kPion)
189             iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
190          if (fPID==AliPID::kKaon)
191             iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
192
193          AddCut(fCutQuality);
194          AddCut(iCutTOFMatch);
195          AddCut(iCutTPCNSigma);
196
197          /* set TPC+TOF PID*/
198          iCutTPCTOFNSigma->SinglePIDRange(5.0);
199          iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
200          iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
201
202          AddCut(iCutTPCTOFNSigma);
203          AddCut(iCutTOFNSigma);
204
205          // scheme:
206          // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
207          SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
208          break;
209
210       case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
211          if (fNsigmaTOF <= 0.0) {
212             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
213             SetNsigmaForFastTOFpid(10.0);
214          }
215          iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
216          //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
217          iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
218
219          AddCut(fCutQuality);
220          AddCut(iCutTOFNSigma);
221          AddCut(iCutTPCTOFNSigma);
222          SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
223          break;
224
225       case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
226          iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
227          AddCut(fCutQuality);
228          AddCut(iCutTOFMatch);
229          AddCut(iCutTPCTOFNSigma);
230          SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
231          break;
232
233    case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
234          AddCut(fCutQuality);
235          AddCut(iCutTOFMatch);
236          AddCut(iCutPhiTRD2010);
237          SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
238          break;
239          
240    case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
241          AddCut(fCutQuality);
242          AddCut(iCutTOFMatch);
243          AddCut(iCutPhiNoTRD2010);
244          SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
245          break;
246
247       case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
248          if (fNsigmaTOF <= 0.0) {
249             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
250             SetNsigmaForFastTOFpid(10.0);
251          }
252          iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
253          //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
254          iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
255
256          AddCut(fCutQuality);
257          AddCut(iCutTOFNSigma);
258          AddCut(iCutTPCTOFNSigma);
259          AddCut(iCutPhiTRD2010);
260          SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
261          break;
262
263  case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
264          if (fNsigmaTOF <= 0.0) {
265             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
266             SetNsigmaForFastTOFpid(10.0);
267          }
268          iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
269          //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
270          iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
271
272          AddCut(fCutQuality);
273          AddCut(iCutTOFNSigma);
274          AddCut(iCutTPCTOFNSigma);
275          AddCut(iCutPhiNoTRD2010);
276          SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
277          break;
278
279    case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
280          if (fNsigmaTPC <= 0.0) {
281             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
282             SetNsigmaForFastTPCpid(10.0);
283          }
284          iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
285          AddCut(fCutQuality);
286          AddCut(iCutTPCNSigma);
287          AddCut(iCutTOFMatch);  
288          SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
289          break;
290
291    case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
292      AddCut(fCutQuality);
293      AddCut(iCutPhiTRD2010);
294      SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
295      break;
296      
297    case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
298      AddCut(fCutQuality);
299      AddCut(iCutPhiNoTRD2010);
300      SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
301      break;
302    
303
304     default :
305          break;
306    }
307
308 }
309
310
311