]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsLambdaNsigma.C
Updated macros for LEGO train (mvala)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsLambdaNsigma.C
1 #ifndef __CINT__
2 #endif
3 Int_t AddRsnDaughterCutsLambdaNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
4 {
5
6    if (!rsnIH) return 0;
7
8    Bool_t valid = kTRUE;
9    Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
10    Int_t useCommonQualityCut = AliRsnTrainManager::GetGlobalInt("RsnCommonQualityCut",valid);
11    Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
12
13    // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
14    Int_t numberOfCuts = 2;
15
16    //---------------------------------------------
17    //  Define single cutsP
18    //---------------------------------------------
19
20    Printf("AddRsnDaughterCutsLambda Option : %s",opt.Data());
21
22    Double_t nSigmaTPC_P=3.0;
23    Double_t nSigmaTPC_K=3.0;
24    Double_t nSigmaTOF_P=3.0;
25    Double_t nSigmaTOF_K=3.0;
26    Double_t etaRange=0.8;
27
28    // default values
29    Double_t nSigmaTPC_P=3.0;
30    Double_t nSigmaTPC_K=3.0;
31    Double_t nSigmaTOF_P=3.0;
32    Double_t nSigmaTOF_K=3.0;
33    Double_t etaRange=0.8;
34
35    Bool_t useTPC_P=kFALSE;
36    Bool_t useTOF_P=kFALSE;
37    Bool_t useTPC_K=kFALSE;
38    Bool_t useTOF_K=kFALSE;
39
40    if (opt.Contains("qualityonly")) {
41       useTPC_P=kFALSE;
42       useTOF_P=kFALSE;
43       useTPC_K=kFALSE;
44       useTOF_K=kFALSE;
45    } else if (!opt.Contains("nsig")) {
46       useTPC_P=kTRUE;
47       useTOF_P=kTRUE;
48       useTPC_K=kTRUE;
49       useTOF_K=kTRUE;
50    }
51
52    if (opt.Contains("PTPCnsig")) useTPC_P=kTRUE;
53    if (opt.Contains("PTOFnsig")) useTOF_P=kTRUE;
54    if (opt.Contains("KTPCnsig"))  useTPC_K=kTRUE;
55    if (opt.Contains("KTOFnsig"))  useTOF_K=kTRUE;
56
57    if (opt.Contains("PTPCnsig10")) nSigmaTPC_P = 1.0;
58    if (opt.Contains("PTPCnsig15")) nSigmaTPC_P = 1.5;
59    if (opt.Contains("PTPCnsig20")) nSigmaTPC_P = 2.0;
60    if (opt.Contains("PTPCnsig25")) nSigmaTPC_P = 2.5;
61    if (opt.Contains("PTPCnsig30")) nSigmaTPC_P = 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("PTOFnsig10")) nSigmaTOF_P = 1.0;
70    if (opt.Contains("PTOFnsig15")) nSigmaTOF_P = 1.5;
71    if (opt.Contains("PTOFnsig20")) nSigmaTOF_P = 2.0;
72    if (opt.Contains("PTOFnsig25")) nSigmaTOF_P = 2.5;
73    if (opt.Contains("PTOFnsig30")) nSigmaTOF_P = 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    // PROTON SETTINGS ===========================================
95
96    TString scheme="";
97    TString cutname = "p_Lambda";
98    if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
99    AliRsnCutSet *cutsP = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
100
101    AliRsnCutTrackQuality *qualityCutP = new AliRsnCutTrackQuality("cutQuatityP");
102    if (useCommonQualityCut>=0) {
103       qualityCutP->SetAODTestFilterBit(useCommonQualityCut);
104    } else {
105       qualityCutP->SetDefaults2010();
106    }
107    cutsP->AddCut(qualityCutP);
108    if (!scheme.IsNull()) scheme += "&";
109    scheme += qualityCutP->GetName();
110
111    if (useTPC_P) {
112       AliRsnCutPIDNSigma *cutPTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCP",AliPID::kProton,AliRsnCutPIDNSigma::kTPC);
113       cutPTPC->SinglePIDRange(nSigmaTPC_P);
114       cutsP->AddCut(cutPTPC);
115       if (!scheme.IsNull()) scheme += "&";
116       scheme += cutPTPC->GetName();
117    }
118
119    if (useTOF_P) {
120       AliRsnCutPIDNSigma *cutPTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFP",AliPID::kProton,AliRsnCutPIDNSigma::kTOF);
121       cutPTOF->SinglePIDRange(nSigmaTOF_P);
122       cutsP->AddCut(cutPTOF);
123       if (!scheme.IsNull()) scheme += "&";
124       scheme += cutPTOF->GetName();
125    }
126
127    if (useEta) {
128       AliRsnValueDaughter *valEtaP = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
129       AliRsnCutValue *cutEtaP = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
130       cutEtaP->SetTargetType(AliRsnTarget::kDaughter);
131       cutEtaP->SetValueObj(valEtaP);
132       cutsP->AddCut(cutEtaP);
133       if (!scheme.IsNull()) scheme += "&";
134       scheme += cutEtaP->GetName();
135    }
136    if (usePDG) {
137       AliRsnCutPID *cutPDGP = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
138       cutsP->AddCut(cutPDGP);
139       if (!scheme.IsNull()) scheme += "&";
140       scheme += cutPDGP->GetName();
141    }
142
143    Printf ("CUT Scheme for PROTON is '%s'",scheme.Data());
144    cutsP->SetCutScheme(scheme.Data());
145
146    // END PROTON =======================================
147
148    // KAON SETTINGS =======================================
149    scheme="";
150    cutname = "K_Lambda";
151    if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
152    AliRsnCutSet *cutsK = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
153
154    AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
155    if (useCommonQualityCut>=0) {
156       qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
157    } else {
158       qualityCutK->SetDefaults2010();
159    }
160    cutsK->AddCut(qualityCutK);
161    if (!scheme.IsNull()) scheme += "&";
162    scheme += qualityCutK->GetName();
163
164
165    if (useTPC_K) {
166       AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
167       cutKTPC->SinglePIDRange(nSigmaTPC_K);
168       cutsK->AddCut(cutKTPC);
169       if (!scheme.IsNull()) scheme += "&";
170       scheme += cutKTPC->GetName();
171    }
172
173    if (useTOF_K) {
174       AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF);
175       cutKTOF->SinglePIDRange(nSigmaTOF_K);
176       cutsK->AddCut(cutKTOF);
177       if (!scheme.IsNull()) scheme += "&";
178       scheme += cutKTOF->GetName();
179    }
180
181    if (useEta) {
182       AliRsnValueDaughter *valEtaK = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kEta);
183       AliRsnCutValue *cutEtaK = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type2),opt.Data()),-etaRange,etaRange);
184       cutEtaK->SetTargetType(AliRsnTarget::kDaughter);
185       cutEtaK->SetValueObj(valEtaK);
186       cutsK->AddCut(cutEtaK);
187       if (!scheme.IsNull()) scheme += "&";
188       scheme += cutEtaK->GetName();
189    }
190    if (usePDG) {
191       AliRsnCutPID *cutPDGK = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);
192       cutsK->AddCut(cutPDGK);
193       if (!scheme.IsNull()) scheme += "&";
194       scheme += cutPDGK->GetName();
195    }
196
197    Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
198    cutsK->SetCutScheme(scheme.Data());
199
200    // END KAON =======================================
201
202    if (opt.Contains("mon")) {
203       AddMonitorOutput(cutsP->GetMonitorOutput(),opt);
204       AddMonitorOutput(cutsK->GetMonitorOutput(),opt);
205    }
206    if (isRsnMini) {
207       AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
208       if (taskRsnMini) {
209          taskRsnMini->AddTrackCuts(cutsP);
210          taskRsnMini->AddTrackCuts(cutsK);
211       }
212    } else {
213       AliRsnDaughterSelector *sel = rsnIH->GetSelector();
214 //       sel->SetLabelCheck(kFALSE);
215       sel->Add(cutsP, kTRUE);
216       sel->Add(cutsK, kTRUE);
217    }
218    return numberOfCuts;
219
220 }