]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx
Removed obsolete classes + added cut set for kstar analysis
[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
15 ClassImp(AliRsnCutSetDaughterParticle)
16
17 //__________________________________________________________________________________________________
18 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
19   AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter),
20   fPID(AliPID::kPion),
21   fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts),
22   fNsigmaTPC(1E20),
23   fNsigmaTOF(1E20)
24 {
25    //
26    // Default constructor
27 }
28
29 //__________________________________________________________________________________________________
30 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) :
31   AliRsnCutSet(name, AliRsnTarget::kDaughter),
32   fPID(pid),
33   fAppliedCutSetID(cutSetID),
34   fNsigmaTPC(1E20),
35   fNsigmaTOF(1E20)
36 {
37    //
38    // Constructor
39    //
40   if ( (nSigmaFast<=0) && 
41        ((cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma)) ) {
42     AliError("Requested fast n-sigma PID with invalid value for n. Setting n = 1E20");
43   } else {
44     if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma){
45       fNsigmaTPC = nSigmaFast;
46     }
47     if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) ||
48         (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) { 
49       fNsigmaTOF = nSigmaFast;
50     }
51   }
52   
53   Init();
54 }
55
56 //__________________________________________________________________________________________________
57 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy) :
58    AliRsnCutSet(copy),
59    fPID(copy.fPID),
60    fAppliedCutSetID(copy.fAppliedCutSetID),
61    fNsigmaTPC(copy.fNsigmaTPC),
62    fNsigmaTOF(copy.fNsigmaTOF)
63 {
64    //
65    // copy constructor
66 }
67
68 //__________________________________________________________________________________________________
69 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle &copy)
70  {
71    //
72    // operator =
73   //
74   AliRsnCutSet::operator=(copy);
75   if (this == &copy)
76     return *this;
77   fPID=copy.fPID;
78   fAppliedCutSetID=copy.fAppliedCutSetID;
79   fNsigmaTPC=copy.fNsigmaTPC;
80   fNsigmaTOF=copy.fNsigmaTOF;
81   return (*this);
82 }
83
84 //----------------------------------------------------------------------------
85 void AliRsnCutSetDaughterParticle::Init() 
86
87   //
88   // init cut sets by setting variable params
89   //  
90       AliRsnCutTrackQuality * iCutQualityStd2010 = new AliRsnCutTrackQuality("CutQualityStd2010");
91       iCutQualityStd2010->SetDefaults2010();
92       /*
93         requires ITS refit ,TPC refit, TPC in
94         iCutQualityStd2010->SetPtRange(0.15, 1E+20);
95         iCutQualityStd2010->SetEtaRange(-0.8, 0.8);
96         iCutQualityStd2010->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
97         iCutQualityStd2010->SetDCAZmax(2.0);
98         iCutQualityStd2010->SetSPDminNClusters(1);
99         iCutQualityStd2010->SetITSminNClusters(0);
100         iCutQualityStd2010->SetITSmaxChi2(36);
101         iCutQualityStd2010->SetTPCminNClusters(70);
102         iCutQualityStd2010->SetTPCmaxChi2(4.0);
103         iCutQualityStd2010->SetRejectKinkDaughters();
104         iCutQualityStd2010->SetAODTestFilterBit(5); 
105       */        
106
107       AliRsnCutTOFMatch  *iCutTOFMatch     = new AliRsnCutTOFMatch("CutTOFMatch");
108       AliRsnCutPIDNSigma *iCutTPCNSigma    = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
109       AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
110       AliRsnCutPIDNSigma *iCutTOFNSigma    = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
111
112       switch (fAppliedCutSetID) 
113         {
114         case AliRsnCutSetDaughterParticle::kNoCuts :
115           AliInfo("No cuts applied to daughter particle");
116           break;
117           
118         case AliRsnCutSetDaughterParticle::kQualityStd2010 :    
119           AddCut(iCutQualityStd2010);
120           SetCutScheme(iCutQualityStd2010->GetName());
121           break;
122
123         case AliRsnCutSetDaughterParticle::kQualityStd2011:      
124           //these are also golden cuts for PbPb 2010 
125           //AliESDtrackCuts::GetStandardITSTPCTrackCuts2011()
126           // select golden cut for ESD -> to be implemented 
127           //select golden cut for AOD
128           iCutQualityStd2010->SetAODTestFilterBit(10);    //1024
129           AddCut(iCutQualityStd2010);
130           SetCutScheme(iCutQualityStd2010->GetName());
131           break;
132           
133         case AliRsnCutSetDaughterParticle::kTOFMatch :
134           AddCut(iCutQualityStd2010);
135           AddCut(iCutTOFMatch);
136           SetCutScheme( Form("%s&(%s)",iCutQualityStd2010->GetName(), iCutTOFMatch->GetName()) );
137           break;
138           
139         case    AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
140           if (fNsigmaTPC <= 0.0) {
141             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
142             SetNsigmaForFastTPCpid(10.0);
143           }
144           iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
145           AddCut(iCutQualityStd2010);
146           AddCut(iCutTPCNSigma);
147           SetCutScheme( Form("%s&%s",iCutQualityStd2010->GetName(), iCutTPCNSigma->GetName()) );
148           break;
149       
150         case    AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
151           if (fNsigmaTOF <= 0.0) {
152             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
153             SetNsigmaForFastTOFpid(10.0);
154           }
155           iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
156           //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
157           AddCut(iCutQualityStd2010);
158           AddCut(iCutTOFNSigma);
159           SetCutScheme( Form("%s&%s",iCutQualityStd2010->GetName(), iCutTOFNSigma->GetName()) );
160           break;
161           
162         case    AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :     
163           /* Set TPC  PID (if no TOF)*/
164           // all   below   350         MeV: 5sigma
165           // all   between 350 and 500 MeV: 3sigma
166           // pios above   500         MeV: 2sigma
167           // kaons between 500 and 700 MeV: 2sigma
168           // kaons above   700         MeV: rejected
169           iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35); 
170           iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5); 
171           if (fPID==AliPID::kPion)
172             iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
173           if (fPID==AliPID::kKaon)
174             iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
175
176           AddCut(iCutQualityStd2010);
177           AddCut(iCutTOFMatch);
178           AddCut(iCutTPCNSigma);
179           
180           /* set TPC+TOF PID*/
181           iCutTPCTOFNSigma->SinglePIDRange(5.0);
182           iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
183           iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
184
185           AddCut(iCutTPCTOFNSigma);
186           AddCut(iCutTOFNSigma);
187       
188           // scheme:
189           // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]      
190           SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",iCutQualityStd2010->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
191           break;
192           
193         case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
194           if (fNsigmaTOF <= 0.0) {
195             AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
196             SetNsigmaForFastTOFpid(10.0);
197           }
198           iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
199           //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
200           iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
201           /* requires ITS refit ,TPC refit, TPC in*/
202           iCutQualityStd2010->SetPtRange(0.15, 1E+20);
203           iCutQualityStd2010->SetEtaRange(-0.8, 0.8);
204           iCutQualityStd2010->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
205           iCutQualityStd2010->SetDCAZmax(2.0);
206           iCutQualityStd2010->SetSPDminNClusters(1);
207           iCutQualityStd2010->SetITSminNClusters(0);
208           iCutQualityStd2010->SetITSmaxChi2(36);
209           iCutQualityStd2010->SetTPCminNClusters(70);
210           iCutQualityStd2010->SetTPCmaxChi2(4.0);
211           iCutQualityStd2010->SetRejectKinkDaughters();
212           //iCutQualityStd2010->SetAODTestFilterBit(10); //AOD086
213           iCutQualityStd2010->SetAODTestFilterBit(5); //AOD049 no golden cuts  
214           AddCut(iCutQualityStd2010);
215           AddCut(iCutTOFNSigma);
216           AddCut(iCutTPCTOFNSigma);
217           SetCutScheme( Form("%s&%s&%s",iCutQualityStd2010->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
218           break;
219
220         default :  
221           break;
222         }
223       
224 }
225
226
227