]>
Commit | Line | Data |
---|---|---|
aec68607 | 1 | #ifndef __CINT__\r |
2 | #include <AliRsnCutPIDNSigma.h>\r | |
3 | #include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>\r | |
4 | #endif\r | |
5 | Int_t AddRsnDaughterCutsRho(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)\r | |
6 | {\r | |
7 | \r | |
8 | if (!rsnIH) return 0;\r | |
9 | \r | |
10 | Bool_t valid = kTRUE;\r | |
11 | Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);\r | |
12 | \r | |
13 | Bool_t usePPCut = kFALSE;\r | |
14 | \r | |
15 | if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;\r | |
16 | \r | |
17 | \r | |
18 | // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====\r | |
19 | Int_t numberOfCuts = 1;\r | |
20 | \r | |
21 | //---------------------------------------------\r | |
22 | // Define single cuts\r | |
23 | //---------------------------------------------\r | |
24 | \r | |
25 | Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());\r | |
26 | \r | |
27 | Double_t nSigmaTPC=3.0;\r | |
28 | Double_t nSigmaTOF=3.0;\r | |
29 | Double_t etaRange=0.8;\r | |
30 | \r | |
31 | if (opt.Contains("TPCsigma1")) nSigmaTPC = 1.0;\r | |
32 | if (opt.Contains("TPCsigma2")) nSigmaTPC = 2.0;\r | |
33 | if (opt.Contains("TPCsigma3")) nSigmaTPC = 3.0;\r | |
34 | \r | |
35 | if (opt.Contains("TOFsigma1")) nSigmaTOF = 1.0;\r | |
36 | if (opt.Contains("TOFsigma2")) nSigmaTOF = 2.0;\r | |
37 | if (opt.Contains("TOFsigma3")) nSigmaTOF = 3.0;\r | |
38 | \r | |
39 | Bool_t usePDG=kFALSE;\r | |
40 | if (opt.Contains("pdg")) {\r | |
41 | Printf("Using PDG");\r | |
42 | usePDG = kTRUE;\r | |
43 | }\r | |
44 | \r | |
45 | Bool_t useEta = kFALSE;\r | |
46 | if (opt.Contains("eta")) {\r | |
47 | Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);\r | |
48 | useEta = kTRUE;\r | |
49 | }\r | |
50 | \r | |
51 | Bool_t usetof = kFALSE;\r | |
52 | if(opt.Contains("tof")) {\r | |
b68f0fc1 | 53 | Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);\r |
54 | usetof = kTRUE;\r | |
aec68607 | 55 | }\r |
56 | \r | |
57 | Bool_t usetpc = kFALSE;\r | |
58 | if(opt.Contains("tpc")) {\r | |
b68f0fc1 | 59 | Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);\r |
60 | usetpc = kTRUE;\r | |
61 | }\r | |
aec68607 | 62 | \r |
63 | //---------------------------------------------\r | |
64 | // Combine cuts\r | |
65 | //---------------------------------------------\r | |
66 | \r | |
67 | TString cutname = "pionRho";\r | |
68 | if (!opt.IsNull()) cutname += Form("_%s",opt.Data());\r | |
69 | AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);\r | |
70 | \r | |
71 | TString scheme="";\r | |
72 | \r | |
73 | AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatity");\r | |
74 | //qualityCut->SetDefaults2010();\r | |
75 | //qualityCut->SetDCAZmax(0.3);\r | |
76 | //qualityCut->SetDCARmax(0.05);\r | |
77 | \r | |
78 | qualityCut->SetDCAZmax(0.2);\r | |
79 | qualityCut->SetDCARmax(0.02);\r | |
80 | qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);\r | |
81 | qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r | |
82 | qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r | |
83 | \r | |
84 | \r | |
85 | qualityCut->SetPtRange(0.15, 1E+20);\r | |
86 | qualityCut->SetEtaRange(-0.8, 0.8);\r | |
87 | qualityCut->SetSPDminNClusters(0);\r | |
88 | qualityCut->SetITSminNClusters(0);\r | |
89 | qualityCut->SetITSmaxChi2(1E+20);\r | |
90 | qualityCut->SetTPCminNClusters(80);\r | |
91 | qualityCut->SetTPCmaxChi2(4.0);\r | |
92 | qualityCut->SetRejectKinkDaughters();\r | |
93 | cuts->AddCut(qualityCut);\r | |
94 | if (!scheme.IsNull()) scheme += "&";\r | |
95 | scheme += qualityCut->GetName();\r | |
b68f0fc1 | 96 | \r |
aec68607 | 97 | if (usetpc) {\r |
b68f0fc1 | 98 | AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r |
99 | cutPiTPC->SinglePIDRange(nSigmaTPC);\r | |
100 | //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);\r | |
101 | cuts->AddCut(cutPiTPC);\r | |
102 | if (!scheme.IsNull()) scheme += "&";\r | |
103 | scheme += cutPiTPC->GetName();\r | |
104 | }\r | |
aec68607 | 105 | \r |
106 | if(usetof) {\r | |
b68f0fc1 | 107 | AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r |
108 | cutPiTOF->SinglePIDRange(nSigmaTOF);\r | |
109 | //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);\r | |
110 | cuts->AddCut(cutPiTOF);\r | |
111 | if (!scheme.IsNull()) scheme += "&";\r | |
112 | scheme += cutPiTOF->GetName();\r | |
aec68607 | 113 | }\r |
114 | \r | |
115 | if (useEta) {\r | |
116 | Printf("Adding ETA ...");\r | |
117 | AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);\r | |
118 | AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);\r | |
119 | cutEta->SetTargetType(AliRsnTarget::kDaughter);\r | |
120 | cutEta->SetValueObj(valEta);\r | |
121 | cuts->AddCut(cutEta);\r | |
122 | if (!scheme.IsNull()) scheme += "&";\r | |
123 | scheme += cutEta->GetName();\r | |
124 | }\r | |
125 | if (usePDG) {\r | |
126 | Printf("Adding PDG ...");\r | |
127 | AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);\r | |
128 | cuts->AddCut(cutPDG);\r | |
129 | if (!scheme.IsNull()) scheme += "&";\r | |
130 | scheme += cutPDG->GetName();\r | |
131 | }\r | |
132 | \r | |
133 | Printf ("CUT Scheme is '%s'",scheme.Data());\r | |
134 | cuts->SetCutScheme(scheme.Data());\r | |
135 | \r | |
136 | if (opt.Contains("mon")) {\r | |
137 | AddMonitorOutput(cuts->GetMonitorOutput(),opt);\r | |
138 | }\r | |
139 | if (isRsnMini) {\r | |
140 | AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);\r | |
141 | if (taskRsnMini) {\r | |
142 | taskRsnMini->AddTrackCuts(cuts);\r | |
143 | }\r | |
144 | } else {\r | |
145 | AliRsnDaughterSelector *sel = rsnIH->GetSelector();\r | |
146 | // sel->SetLabelCheck(kFALSE);\r | |
147 | sel->Add(cuts, kTRUE);\r | |
148 | }\r | |
149 | return numberOfCuts;\r | |
150 | \r | |
151 | }\r | |
152 | \r |