2 #include <AliRsnCutTrackQuality.h>
4 Int_t AddRsnDaughterCutsPhiNsigma(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);
14 Bool_t usePPCut = kFALSE;
16 if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;
19 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
20 Int_t numberOfCuts = 1;
22 //---------------------------------------------
24 //---------------------------------------------
26 Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());
28 Double_t nSigmaTPC=3.0;
29 Double_t nSigmaTOF=3.0;
30 Double_t etaRange=0.8;
31 Double_t trackPtMin=0.;
32 Double_t trackPtMax=1.e10;
34 Bool_t useTPC_K=kFALSE;
35 Bool_t useTOF_K=kFALSE;
36 Bool_t useTrackPtCut=kFALSE;
38 if (opt.Contains("qualityonly")) {
41 } else if (!opt.Contains("nsig")) {
46 if (opt.Contains("KTPCnsig")) useTPC_K=kTRUE;
47 if (opt.Contains("KTOFnsig")) useTOF_K=kTRUE;
49 if (opt.Contains("KTPCnsig10")) nSigmaTPC = 1.0;
50 if (opt.Contains("KTPCnsig15")) nSigmaTPC = 1.5;
51 if (opt.Contains("KTPCnsig20")) nSigmaTPC = 2.0;
52 if (opt.Contains("KTPCnsig25")) nSigmaTPC = 2.5;
53 if (opt.Contains("KTPCnsig30")) nSigmaTPC = 3.0;
55 if (opt.Contains("KTOFnsig10")) nSigmaTOF = 1.0;
56 if (opt.Contains("KTOFnsig15")) nSigmaTOF = 1.5;
57 if (opt.Contains("KTOFnsig20")) nSigmaTOF = 2.0;
58 if (opt.Contains("KTOFnsig25")) nSigmaTOF = 2.5;
59 if (opt.Contains("KTOFnsig30")) nSigmaTOF = 3.0;
61 if (opt.Contains("KTOFnsig1000")) nSigmaTOF = 100.0;
63 if (opt.Contains("trackPt")) {
64 useTrackPtCut = kTRUE;
65 if (opt.Contains("trackPtMin02")) trackPtMin = 0.2;
66 if (opt.Contains("trackPtMin05")) trackPtMin = 0.5;
68 if (opt.Contains("trackPtMax18")) trackPtMax = 1.8;
69 if (opt.Contains("trackPtMax20")) trackPtMax = 2.0;
70 if (opt.Contains("trackPtMax25")) trackPtMax = 2.5;
74 if (opt.Contains("pdg")) {
79 Bool_t useEta = kFALSE;
80 if (opt.Contains("eta")) {
81 if(opt.Contains("eta08")) etaRange=0.8;
82 if(opt.Contains("eta07")) etaRange=0.7;
83 if(opt.Contains("eta06")) etaRange=0.6;
84 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
88 //---------------------------------------------
90 //---------------------------------------------
92 TString cutname = "K_Phi";
93 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
94 AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
97 AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQualityK");
98 if (useCommonQualityCut>=0) {
99 qualityCut->SetAODTestFilterBit(useCommonQualityCut);
101 qualityCut->SetDefaults2010();
103 cuts->AddCut(qualityCut);
104 if (!scheme.IsNull()) scheme += "&";
105 scheme += qualityCut->GetName();
109 AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
110 cutKTPC->SinglePIDRange(nSigmaTPC);
111 cuts->AddCut(cutKTPC);
112 if (!scheme.IsNull()) scheme += "&";
113 scheme += cutKTPC->GetName();
117 AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF);
118 cutKTOF->SinglePIDRange(nSigmaTOF);
119 cuts->AddCut(cutKTOF);
120 if (!scheme.IsNull()) scheme += "&";
121 scheme += cutKTOF->GetName();
125 Printf("Adding ETA ...");
126 AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
127 AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
128 cutEta->SetTargetType(AliRsnTarget::kDaughter);
129 cutEta->SetValueObj(valEta);
130 cuts->AddCut(cutEta);
131 if (!scheme.IsNull()) scheme += "&";
132 scheme += cutEta->GetName();
136 Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
137 AliRsnValueDaughter *valTrackPt = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt);
139 AliRsnCutValue *cutTrackPt = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax);
140 cutTrackPt->SetTargetType(AliRsnTarget::kDaughter);
141 cutTrackPt->SetValueObj(valTrackPt);
142 cuts->AddCut(cutTrackPt);
143 if (!scheme.IsNull()) scheme += "&";
144 scheme += cutTrackPt->GetName();
148 Printf("Adding PDG ...");
149 AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
150 cuts->AddCut(cutPDG);
151 if (!scheme.IsNull()) scheme += "&";
152 scheme += cutPDG->GetName();
155 Printf ("CUT Scheme is '%s'",scheme.Data());
156 cuts->SetCutScheme(scheme.Data());
158 if (opt.Contains("mon")) {
159 AddMonitorOutput(cuts->GetMonitorOutput(),opt);
162 AliRsnMiniAnalysisTask *taskRsnMini = (AliRsnMiniAnalysisTask *)task;
164 taskRsnMini->AddTrackCuts(cuts);
167 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
168 // sel->SetLabelCheck(kFALSE);
169 sel->Add(cuts, kTRUE);