2 #include <AliRsnCutPIDNSigma.h>
3 #include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>
5 Int_t AddRsnDaughterCutsRho(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
11 Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",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 = 1;
21 //---------------------------------------------
23 //---------------------------------------------
25 Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());
27 Double_t nSigmaTPC=3.0;
28 Double_t nSigmaTOF=3.0;
29 Double_t etaRange=0.8;
31 if (opt.Contains("TPCsigma1")) nSigmaTPC = 1.0;
32 if (opt.Contains("TPCsigma2")) nSigmaTPC = 2.0;
33 if (opt.Contains("TPCsigma3")) nSigmaTPC = 3.0;
35 if (opt.Contains("TOFsigma1")) nSigmaTOF = 1.0;
36 if (opt.Contains("TOFsigma2")) nSigmaTOF = 2.0;
37 if (opt.Contains("TOFsigma3")) nSigmaTOF = 3.0;
40 if (opt.Contains("pdg")) {
45 Bool_t useEta = kFALSE;
46 if (opt.Contains("eta")) {
47 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
51 Bool_t usetof = kFALSE;
52 if(opt.Contains("tof")) {
53 Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);
57 Bool_t usetpc = kFALSE;
58 if(opt.Contains("tpc")) {
59 Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);
63 //---------------------------------------------
65 //---------------------------------------------
67 TString cutname = "pionRho";
68 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
69 AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
73 AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatity");
74 //qualityCut->SetDefaults2010();
75 //qualityCut->SetDCAZmax(0.3);
76 //qualityCut->SetDCARmax(0.05);
78 qualityCut->SetDCAZmax(0.2);
79 qualityCut->SetDCARmax(0.02);
80 qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);
81 qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
82 qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
85 qualityCut->SetPtRange(0.15, 1E+20);
86 qualityCut->SetEtaRange(-0.8, 0.8);
87 qualityCut->SetSPDminNClusters(0);
88 qualityCut->SetITSminNClusters(0);
89 qualityCut->SetITSmaxChi2(1E+20);
90 qualityCut->SetTPCminNClusters(80);
91 qualityCut->SetTPCmaxChi2(4.0);
92 qualityCut->SetRejectKinkDaughters();
93 cuts->AddCut(qualityCut);
94 if (!scheme.IsNull()) scheme += "&";
95 scheme += qualityCut->GetName();
98 AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
99 cutPiTPC->SinglePIDRange(nSigmaTPC);
100 //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);
101 cuts->AddCut(cutPiTPC);
102 if (!scheme.IsNull()) scheme += "&";
103 scheme += cutPiTPC->GetName();
107 AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
108 cutPiTOF->SinglePIDRange(nSigmaTOF);
109 //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);
110 cuts->AddCut(cutPiTOF);
111 if (!scheme.IsNull()) scheme += "&";
112 scheme += cutPiTOF->GetName();
116 Printf("Adding ETA ...");
117 AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
118 AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
119 cutEta->SetTargetType(AliRsnTarget::kDaughter);
120 cutEta->SetValueObj(valEta);
121 cuts->AddCut(cutEta);
122 if (!scheme.IsNull()) scheme += "&";
123 scheme += cutEta->GetName();
126 Printf("Adding PDG ...");
127 AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
128 cuts->AddCut(cutPDG);
129 if (!scheme.IsNull()) scheme += "&";
130 scheme += cutPDG->GetName();
133 Printf ("CUT Scheme is '%s'",scheme.Data());
134 cuts->SetCutScheme(scheme.Data());
136 if (opt.Contains("mon")) {
137 AddMonitorOutput(cuts->GetMonitorOutput(),opt);
140 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
142 taskRsnMini->AddTrackCuts(cuts);
145 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
146 // sel->SetLabelCheck(kFALSE);
147 sel->Add(cuts, kTRUE);