3 Int_t AddRsnDaughterCutsLambdaNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
9 Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
10 Int_t useCommonQualityCut = AliRsnTrainManager::GetGlobalInt("RsnCommonQualityCut",valid);
11 Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
13 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
14 Int_t numberOfCuts = 2;
16 //---------------------------------------------
17 // Define single cutsP
18 //---------------------------------------------
20 Printf("AddRsnDaughterCutsLambda Option : %s",opt.Data());
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;
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;
35 Bool_t useTPC_P=kFALSE;
36 Bool_t useTOF_P=kFALSE;
37 Bool_t useTPC_K=kFALSE;
38 Bool_t useTOF_K=kFALSE;
40 if (opt.Contains("qualityonly")) {
45 } else if (!opt.Contains("nsig")) {
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;
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;
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;
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;
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;
83 if (opt.Contains("pdg")) {
88 Bool_t useEta = kFALSE;
89 if (opt.Contains("eta")) {
90 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
94 // PROTON SETTINGS ===========================================
97 TString cutname = "p_Lambda";
98 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
99 AliRsnCutSet *cutsP = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
101 AliRsnCutTrackQuality *qualityCutP = new AliRsnCutTrackQuality("cutQuatityP");
102 if (useCommonQualityCut>=0) {
103 qualityCutP->SetAODTestFilterBit(useCommonQualityCut);
105 qualityCutP->SetDefaults2010();
107 cutsP->AddCut(qualityCutP);
108 if (!scheme.IsNull()) scheme += "&";
109 scheme += qualityCutP->GetName();
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();
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();
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();
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();
143 Printf ("CUT Scheme for PROTON is '%s'",scheme.Data());
144 cutsP->SetCutScheme(scheme.Data());
146 // END PROTON =======================================
148 // KAON SETTINGS =======================================
150 cutname = "K_Lambda";
151 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
152 AliRsnCutSet *cutsK = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
154 AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
155 if (useCommonQualityCut>=0) {
156 qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
158 qualityCutK->SetDefaults2010();
160 cutsK->AddCut(qualityCutK);
161 if (!scheme.IsNull()) scheme += "&";
162 scheme += qualityCutK->GetName();
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();
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();
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();
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();
197 Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
198 cutsK->SetCutScheme(scheme.Data());
200 // END KAON =======================================
202 if (opt.Contains("mon")) {
203 AddMonitorOutput(cutsP->GetMonitorOutput(),opt);
204 AddMonitorOutput(cutsK->GetMonitorOutput(),opt);
207 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
209 taskRsnMini->AddTrackCuts(cutsP);
210 taskRsnMini->AddTrackCuts(cutsK);
213 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
214 // sel->SetLabelCheck(kFALSE);
215 sel->Add(cutsP, kTRUE);
216 sel->Add(cutsK, kTRUE);