4 Int_t AddRsnDaughterCutsKStarNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
10 Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);
11 Int_t useCommonQualityCut = AliAnalysisManager::GetGlobalInt("rsnCommonQualityCut",valid);
13 Bool_t usePPCut = kFALSE;
15 if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;
18 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
19 Int_t numberOfCuts = 2;
21 //---------------------------------------------
22 // Define single cutsP
23 //---------------------------------------------
25 Printf("AddRsnDaughterCutsKStarNsigma Option : %s",opt.Data());
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;
35 Bool_t useTPC_Pi=kFALSE;
36 Bool_t useTOF_Pi=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("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;
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;
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("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;
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 // KAON SETTINGS =======================================
96 TString cutname = "K_Kstar";
97 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
98 AliRsnCutSet *cutsK = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
100 AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
101 if (useCommonQualityCut>=0) {
102 qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
104 qualityCutK->SetDefaults2010();
106 cutsK->AddCut(qualityCutK);
107 if (!scheme.IsNull()) scheme += "&";
108 scheme += qualityCutK->GetName();
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();
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();
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();
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();
141 Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
142 cutsK->SetCutScheme(scheme.Data());
144 // END KAON =======================================
146 // Pion SETTINGS ===========================================
149 cutname = "Pi_Kstar";
150 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
151 AliRsnCutSet *cutsP = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
153 AliRsnCutTrackQuality *qualityCutPi = new AliRsnCutTrackQuality("cutQuatityPi");
154 if (useCommonQualityCut>=0) {
155 qualityCutPi->SetAODTestFilterBit(useCommonQualityCut);
157 qualityCutPi->SetDefaults2010();
159 cutsP->AddCut(qualityCutPi);
160 if (!scheme.IsNull()) scheme += "&";
161 scheme += qualityCutPi->GetName();
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();
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();
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();
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();
192 Printf ("CUT Scheme for PION is '%s'",scheme.Data());
193 cutsP->SetCutScheme(scheme.Data());
195 // END PROTON =======================================
199 if (opt.Contains("mon")) {
200 AddMonitorOutput(cutsP->GetMonitorOutput(),opt);
201 AddMonitorOutput(cutsK->GetMonitorOutput(),opt);
204 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
206 taskRsnMini->AddTrackCuts(cutsK);
207 taskRsnMini->AddTrackCuts(cutsP);
211 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
212 // sel->SetLabelCheck(kFALSE);
213 sel->Add(cutsP, kTRUE);
214 sel->Add(cutsK, kTRUE);