45 UInt_t useTracksForRef = 0,
55 Fatal(
"",
"No analysis manager to connect to.");
60 Fatal(
"",
"Cannot proceed without and AOD handler");
64 Fatal(
"",
"The relevant tasks weren't added to the train");
70 if (useEtaGap && use3cor)
71 Fatal(
"",
"You're doing it wrong! Cannot do both eta-gap and 3-sub");
101 task->SetFlowFlags(flags);
105 if (useTracksForRef) task->SetEtaGapValue(0.4);
106 else task->SetEtaGapValue(etaGap);
108 else if (useTracksForRef && fwdDet.Contains(
"FMD")) task->SetEtaGapValue(0.0);
111 task->SetMaxFlowMoment(maxMom);
116 a =
new TAxis(6, 93.75, 318.75);
119 a =
new TAxis(20, -10, 10);
121 task->SetVertexAxis(a);
126 Double_t cent[] = {0, 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100});
128 centAxis =
new TAxis(nBins, cent);
130 Double_t cent[] = {0, 2.5, 5, 7.5, 10, 12.5, 15, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 95, 100 };
132 centAxis =
new TAxis(nBins, cent);
134 task->SetCentralityAxis(centAxis);
137 task->SetDetectorCuts(outlierCutFMD, outlierCutSPD);
140 if (useTracksForRef > 0) {
141 AliAnalysisFilter* trackCuts =
new AliAnalysisFilter(
"trackFilter");
143 if (useTracksForRef == 1) {
144 AliESDtrackCuts* tpcTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
145 tpcTrackCuts->SetPtRange(0.2, 5.0);
146 tpcTrackCuts->SetEtaRange(-0.8, 0.8);
147 tpcTrackCuts->SetMinNClustersTPC(70);
148 trackCuts->AddCuts(tpcTrackCuts);
149 task->SetTrackCuts(trackCuts);
150 }
else if (useTracksForRef == 2) {
152 AliESDtrackCuts* baseCuts =
new AliESDtrackCuts(
"base");
153 TFormula *f1NClustersTPCLinearPtDep =
new TFormula(
"f1NClustersTPCLinearPtDep",
"70.+30./20.*x");
154 baseCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
155 baseCuts->SetMinNClustersTPC(70);
156 baseCuts->SetMaxChi2PerClusterTPC(4);
157 baseCuts->SetRequireTPCStandAlone(kTRUE);
158 baseCuts->SetAcceptKinkDaughters(kFALSE);
159 baseCuts->SetRequireTPCRefit(kTRUE);
160 baseCuts->SetMaxFractionSharedTPCClusters(0.4);
162 baseCuts->SetRequireITSRefit(kTRUE);
164 baseCuts->SetMaxDCAToVertexXY(2.4);
165 baseCuts->SetMaxDCAToVertexZ(3.2);
166 baseCuts->SetDCAToVertex2D(kTRUE);
168 baseCuts->SetMaxChi2PerClusterITS(36);
169 baseCuts->SetMaxChi2TPCConstrainedGlobal(36);
170 baseCuts->SetRequireSigmaToVertex(kFALSE);
173 baseCuts->SetEtaRange(-0.8, 0.8);
174 baseCuts->SetPtRange(0.2, 5.);
177 AliESDtrackCuts* globalCuts = baseCuts->Clone(
"global");
178 globalCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
181 AliESDtrackCuts* constrainedCuts = baseCuts->Clone(
"vertexConstrained");
182 constrainedCuts->SetRequireITSRefit(kFALSE);
185 trackCuts->AddCuts(globalCuts);
186 trackCuts->AddCuts(constrainedCuts);
187 task->SetTrackCuts(trackCuts);
191 if (useTracksForRef == 1) {
192 AliESDtrackCuts* tpcTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
193 tpcTrackCuts->SetPtRange(0.2, 5.0);
194 tpcTrackCuts->SetEtaRange(-0.8, 0.8);
195 tpcTrackCuts->SetMinNClustersTPC(70);
196 trackCuts->AddCuts(tpcTrackCuts);
197 task->SetTrackCuts(trackCuts);
198 }
else if (useTracksForRef == 2) {
199 AliESDtrackCuts* baseCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
200 baseCuts->SetMaxDCAToVertexXY(2.4);
201 baseCuts->SetMaxDCAToVertexZ(3.2);
202 baseCuts->SetDCAToVertex2D(kTRUE);
203 baseCuts->SetMaxChi2TPCConstrainedGlobal(36);
204 baseCuts->SetMaxFractionSharedTPCClusters(0.4);
206 baseCuts->SetEtaRange(-0.8, 0.8);
207 baseCuts->SetPtRange(0.2, 5.);
210 AliESDtrackCuts* globalCuts = baseCuts->Clone(
"global");
213 AliESDtrackCuts* constrainedCuts = baseCuts->Clone(
"vertexConstrained");
214 constrainedCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
215 constrainedCuts->SetRequireITSRefit(kTRUE);
218 trackCuts->AddCuts(globalCuts);
219 trackCuts->AddCuts(constrainedCuts);
220 task->SetTrackCuts(trackCuts);
228 AliAnalysisDataContainer* sums =
229 mgr->CreateContainer(sumName, TList::Class(),
230 AliAnalysisManager::kOutputContainer,
231 AliAnalysisManager::GetCommonFileName());
232 AliAnalysisDataContainer* output =
233 mgr->CreateContainer(resName, TList::Class(),
234 AliAnalysisManager::kParamContainer,
235 AliAnalysisManager::GetCommonFileName());
236 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
237 mgr->ConnectOutput(task, 1, sums);
238 mgr->ConnectOutput(task, 2, output);
void AddTaskForwardFlowQC(Int_t maxMom=5, TString fwdDet="FMD", Bool_t useEtaGap=kFALSE, Bool_t use3cor=kFALSE, Bool_t mc=kFALSE, Double_t outlierCutFMD=4.0, Double_t outlierCutSPD=4.0, Double_t etaGap=2.0, UInt_t useTracksForRef=0, Bool_t useCent=kFALSE, Bool_t ispA=kFALSE, Bool_t useMCVtx=kFALSE, Bool_t satVtx=kFALSE, Bool_t addFlow=kFALSE)
void SetUseFlowWeights(Bool_t use=kTRUE)
static UShort_t CheckForAOD()
void SetUseMCHeaderVertex(Bool_t use=kTRUE)
static const Char_t * GetQCType(UShort_t flags, Bool_t prependUS=kTRUE)
static Bool_t CheckForTask(const char *clsOrName, Bool_t cls=true)
void SetUseImpactParameter(Bool_t use=kTRUE)