]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsRhoNsigma.C
Fix typo in AddRsnDaughterCuts*NSigma + changed binning in monitoring histos + fix...
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsRhoNsigma.C
CommitLineData
51a8daf6 1#ifndef __CINT__
2#include <AliRsnCutPIDNSigma.h>
3#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>
4#endif
5Int_t AddRsnDaughterCutsRhoNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
6{
7
8 if (!rsnIH) return 0;
9
10 Bool_t valid;
11 Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
12
13 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
14 Int_t numberOfCuts = 1;
15
16 //---------------------------------------------
17 // Define single cuts
18 //---------------------------------------------
19
20 Printf("AddRsnDaughterCutsRho Option : %s",opt.Data());
21
22 Double_t nSigmaTPC=3.0;
23 Double_t nSigmaTOF=3.0;
24 Double_t etaRange=0.8;
25 Bool_t useTPC_Pi=kFALSE;
26 Bool_t useTOF_Pi=kFALSE;
27
28 if (opt.Contains("qualityonly")) {
29 useTPC_Pi=kFALSE;
30 useTOF_Pi=kFALSE;
31 } else if (!opt.Contains("nsig")) {
32 useTPC_Pi=kTRUE;
33 useTOF_Pi=kTRUE;
34 }
35
36 if (opt.Contains("PiTPCnsig")) useTPC_Pi=kTRUE;
37 if (opt.Contains("PiTOFnsig")) useTOF_Pi=kTRUE;
38
39 if (opt.Contains("PiTPCnsig10")) nSigmaTPC = 1.0;
40 if (opt.Contains("PiTPCnsig15")) nSigmaTPC = 1.5;
41 if (opt.Contains("PiTPCnsig20")) nSigmaTPC = 2.0;
42 if (opt.Contains("PiTPCnsig25")) nSigmaTPC = 2.5;
43 if (opt.Contains("PiTPCnsig30")) nSigmaTPC = 3.0;
44
45 if (opt.Contains("PiTOFnsig10")) nSigmaTOF = 1.0;
46 if (opt.Contains("PiTOFnsig15")) nSigmaTOF = 1.5;
47 if (opt.Contains("PiTOFnsig20")) nSigmaTOF = 2.0;
48 if (opt.Contains("PiTOFnsig25")) nSigmaTOF = 2.5;
49 if (opt.Contains("PiTOFnsig30")) nSigmaTOF = 3.0;
50
51 Bool_t usePDG=kFALSE;
52 if (opt.Contains("pdg")) {
53 Printf("Using PDG");
54 usePDG = kTRUE;
55 }
56
57 Bool_t useEta = kFALSE;
58 if (opt.Contains("eta")) {
59 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
60 useEta = kTRUE;
61 }
62
63//---------------------------------------------
64// Combine cuts
65//---------------------------------------------
66
67 TString cutname = "Pi_Rho";
68 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
69 AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
70
71 TString scheme="";
72
73 AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatityPi");
74 //qualityCut->SetDefaults2010();
75
76 qualityCut->SetDCAZmax(0.2);
77 qualityCut->SetDCARmax(0.02);
78 qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);
79 qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
80 qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
81
82 qualityCut->SetPtRange(0.2, 1E+20);
83 qualityCut->SetEtaRange(-0.8, 0.8);
84 qualityCut->SetSPDminNClusters(0);
85 qualityCut->SetITSminNClusters(0);
86 qualityCut->SetITSmaxChi2(1E+20);
87 qualityCut->SetTPCminNClusters(70);
88 qualityCut->SetTPCmaxChi2(4.0);
89 qualityCut->SetRejectKinkDaughters();
90
91 cuts->AddCut(qualityCut);
92 if (!scheme.IsNull()) scheme += "&";
93 scheme += qualityCut->GetName();
94
95 if (useTPC_Pi) {
96 AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
97 cutPiTPC->SinglePIDRange(nSigmaTPC);
98 cuts->AddCut(cutPiTPC);
99 if (!scheme.IsNull()) scheme += "&";
100 scheme += cutPiTPC->GetName();
101 }
102 if (useTOF_Pi) {
103 AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
104 cutPiTOF->SinglePIDRange(nSigmaTOF);
105 cuts->AddCut(cutPiTOF);
106 if (!scheme.IsNull()) scheme += "&";
107 scheme += cutPiTOF->GetName();
108 }
109 if (useEta) {
110 Printf("Adding ETA ...");
111 AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
112 AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
113 cutEta->SetTargetType(AliRsnTarget::kDaughter);
114 cutEta->SetValueObj(valEta);
115 cuts->AddCut(cutEta);
116 if (!scheme.IsNull()) scheme += "&";
117 scheme += cutEta->GetName();
118 }
119 if (usePDG) {
120 Printf("Adding PDG ...");
121 AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
122 cuts->AddCut(cutPDG);
123 if (!scheme.IsNull()) scheme += "&";
124 scheme += cutPDG->GetName();
125 }
126
127 Printf ("CUT Scheme is '%s'",scheme.Data());
128 cuts->SetCutScheme(scheme.Data());
129
130 if (opt.Contains("mon")) {
131 AddMonitorOutput(cuts->GetMonitorOutput(),opt);
132 }
133 if (isRsnMini) {
134 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
135 if (taskRsnMini) {
136 taskRsnMini->AddTrackCuts(cuts);
137 }
138 } else {
139 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
140// sel->SetLabelCheck(kFALSE);
141 sel->Add(cuts, kTRUE);
142 }
143 return numberOfCuts;
144
145}
146