]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsKStarNsigma.C
Updated cut classes and macro for Sigma* analysis (M. Venaruzzo)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsKStarNsigma.C
1 #ifndef __CINT__
2 #include <Rtypes.h>
3 #endif
4 Int_t AddRsnDaughterCutsKStarNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
5 {
6
7    if (!rsnIH) return 0;
8
9    Bool_t valid = kTRUE;
10    Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);
11    Int_t useCommonQualityCut = AliAnalysisManager::GetGlobalInt("rsnCommonQualityCut",valid);
12
13    Bool_t usePPCut = kFALSE;
14
15    if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;
16
17
18    // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
19    Int_t numberOfCuts = 2;
20
21    //---------------------------------------------
22    //  Define single cutsP
23    //---------------------------------------------
24
25    Printf("AddRsnDaughterCutsKStarNsigma Option : %s",opt.Data());
26
27
28    // default values
29    Double_t nSigmaTPC_Pi=3.0;
30    Double_t nSigmaTPC_K=3.0;
31    Double_t nSigmaTOF_Pi=3.0;
32    Double_t nSigmaTOF_K=3.0;
33    Double_t etaRange=0.8;
34
35    Bool_t useTPC_Pi=kFALSE;
36    Bool_t useTOF_Pi=kFALSE;
37    Bool_t useTPC_K=kFALSE;
38    Bool_t useTOF_K=kFALSE;
39
40    if (opt.Contains("qualityonly")) {
41       useTPC_Pi=kFALSE;
42       useTOF_Pi=kFALSE;
43       useTPC_K=kFALSE;
44       useTOF_K=kFALSE;
45    } else if (!opt.Contains("nsig")) {
46       useTPC_Pi=kTRUE;
47       useTOF_Pi=kTRUE;
48       useTPC_K=kTRUE;
49       useTOF_K=kTRUE;
50    }
51
52    if (opt.Contains("PiTPCnsig")) useTPC_Pi=kTRUE;
53    if (opt.Contains("PiTOFnsig")) useTOF_Pi=kTRUE;
54    if (opt.Contains("KTPCnsig"))  useTPC_K=kTRUE;
55    if (opt.Contains("KTOFnsig"))  useTOF_K=kTRUE;
56
57    if (opt.Contains("PiTPCnsig10")) nSigmaTPC_Pi = 1.0;
58    if (opt.Contains("PiTPCnsig15")) nSigmaTPC_Pi = 1.5;
59    if (opt.Contains("PiTPCnsig20")) nSigmaTPC_Pi = 2.0;
60    if (opt.Contains("PiTPCnsig25")) nSigmaTPC_Pi = 2.5;
61    if (opt.Contains("PiTPCnsig30")) nSigmaTPC_Pi = 3.0;
62
63    if (opt.Contains("KTPCnsig10")) nSigmaTPC_K = 1.0;
64    if (opt.Contains("KTPCnsig15")) nSigmaTPC_K = 1.5;
65    if (opt.Contains("KTPCnsig20")) nSigmaTPC_K = 2.0;
66    if (opt.Contains("KTPCnsig25")) nSigmaTPC_K = 2.5;
67    if (opt.Contains("KTPCnsig30")) nSigmaTPC_K = 3.0;
68
69    if (opt.Contains("PiTOFnsig10")) nSigmaTOF_Pi = 1.0;
70    if (opt.Contains("PiTOFnsig15")) nSigmaTOF_Pi = 1.5;
71    if (opt.Contains("PiTOFnsig20")) nSigmaTOF_Pi = 2.0;
72    if (opt.Contains("PiTOFnsig25")) nSigmaTOF_Pi = 2.5;
73    if (opt.Contains("PiTOFnsig30")) nSigmaTOF_Pi = 3.0;
74
75    if (opt.Contains("KTOFnsig10")) nSigmaTOF_K = 1.0;
76    if (opt.Contains("KTOFnsig15")) nSigmaTOF_K = 1.5;
77    if (opt.Contains("KTOFnsig20")) nSigmaTOF_K = 2.0;
78    if (opt.Contains("KTOFnsig25")) nSigmaTOF_K = 2.5;
79    if (opt.Contains("KTOFnsig30")) nSigmaTOF_K = 3.0;
80
81
82    Bool_t usePDG=kFALSE;
83    if (opt.Contains("pdg")) {
84       Printf("Using PDG");
85       usePDG = kTRUE;
86    }
87
88    Bool_t useEta = kFALSE;
89    if (opt.Contains("eta")) {
90       Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
91       useEta = kTRUE;
92    }
93
94    // KAON SETTINGS =======================================
95    TString scheme="";
96    TString cutname = "K_Kstar";
97    if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
98    AliRsnCutSet *cutsK = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
99
100    AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
101    if (useCommonQualityCut>=0) {
102       qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
103    } else {
104       qualityCutK->SetDefaults2010();
105    }
106    cutsK->AddCut(qualityCutK);
107    if (!scheme.IsNull()) scheme += "&";
108    scheme += qualityCutK->GetName();
109
110    if (useTPC_K) {
111       AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
112       cutKTPC->SinglePIDRange(nSigmaTPC_K);
113       cutsK->AddCut(cutKTPC);
114       if (!scheme.IsNull()) scheme += "&";
115       scheme += cutKTPC->GetName();
116    }
117
118    if (useTOF_K) {
119       AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF);
120       cutKTOF->SinglePIDRange(nSigmaTOF_K);
121       cutsK->AddCut(cutKTOF);
122       if (!scheme.IsNull()) scheme += "&";
123       scheme += cutKTOF->GetName();
124    }
125    if (useEta) {
126       AliRsnValueDaughter *valEtaK = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kEta);
127       AliRsnCutValue *cutEtaK = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type2),opt.Data()),-etaRange,etaRange);
128       cutEtaK->SetTargetType(AliRsnTarget::kDaughter);
129       cutEtaK->SetValueObj(valEtaK);
130       cutsK->AddCut(cutEtaK);
131       if (!scheme.IsNull()) scheme += "&";
132       scheme += cutEtaK->GetName();
133    }
134    if (usePDG) {
135       AliRsnCutPID *cutPDGK = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);
136       cutsK->AddCut(cutPDGK);
137       if (!scheme.IsNull()) scheme += "&";
138       scheme += cutPDGK->GetName();
139    }
140
141    Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
142    cutsK->SetCutScheme(scheme.Data());
143
144    // END KAON =======================================
145
146    // Pion SETTINGS ===========================================
147
148    scheme="";
149    cutname = "Pi_Kstar";
150    if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
151    AliRsnCutSet *cutsP = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
152
153    AliRsnCutTrackQuality *qualityCutPi = new AliRsnCutTrackQuality("cutQuatityPi");
154    if (useCommonQualityCut>=0) {
155       qualityCutPi->SetAODTestFilterBit(useCommonQualityCut);
156    } else {
157       qualityCutPi->SetDefaults2010();
158    }
159    cutsP->AddCut(qualityCutPi);
160    if (!scheme.IsNull()) scheme += "&";
161    scheme += qualityCutPi->GetName();
162    if (useTPC_Pi) {
163       AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
164       cutPiTPC->SinglePIDRange(nSigmaTPC_Pi);
165       cutsP->AddCut(cutPiTPC);
166       if (!scheme.IsNull()) scheme += "&";
167       scheme += cutPiTPC->GetName();
168    }
169    if (useTOF_Pi) {
170       AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
171       cutPiTOF->SinglePIDRange(nSigmaTOF_Pi);
172       cutsP->AddCut(cutPiTOF);
173       if (!scheme.IsNull()) scheme += "&";
174       scheme += cutPiTOF->GetName();
175    }
176    if (useEta) {
177       AliRsnValueDaughter *valEtaP = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
178       AliRsnCutValue *cutEtaP = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
179       cutEtaP->SetTargetType(AliRsnTarget::kDaughter);
180       cutEtaP->SetValueObj(valEtaP);
181       cutsP->AddCut(cutEtaP);
182       if (!scheme.IsNull()) scheme += "&";
183       scheme += cutEtaP->GetName();
184    }
185    if (usePDG) {
186       AliRsnCutPID *cutPDGP = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
187       cutsP->AddCut(cutPDGP);
188       if (!scheme.IsNull()) scheme += "&";
189       scheme += cutPDGP->GetName();
190    }
191
192    Printf ("CUT Scheme for PION is '%s'",scheme.Data());
193    cutsP->SetCutScheme(scheme.Data());
194
195    // END PROTON =======================================
196
197
198
199    if (opt.Contains("mon")) {
200       AddMonitorOutput(cutsP->GetMonitorOutput(),opt);
201       AddMonitorOutput(cutsK->GetMonitorOutput(),opt);
202    }
203    if (isRsnMini) {
204       AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
205       if (taskRsnMini) {
206          taskRsnMini->AddTrackCuts(cutsK);
207          taskRsnMini->AddTrackCuts(cutsP);
208
209       }
210    } else {
211       AliRsnDaughterSelector *sel = rsnIH->GetSelector();
212 //       sel->SetLabelCheck(kFALSE);
213       sel->Add(cutsP, kTRUE);
214       sel->Add(cutsK, kTRUE);
215    }
216    return numberOfCuts;
217
218 }