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