10 #ifndef ALISIMPLEHEADERTASK_C
11 #define ALISIMPLEHEADERTASK_C
12 #include <AliAnalysisTaskSE.h>
15 # include <AliVVertex.h>
16 # include <AliVertex.h>
17 # include <AliAnalysisManager.h>
18 # include <AliVEventHandler.h>
19 # include <AliInputEventHandler.h>
20 # include <AliMultSelection.h>
21 # include <AliAODHandler.h>
22 # include <AliCollisionGeometry.h>
23 # include <AliGenEventHeader.h>
24 # include <AliGenCocktailEventHeader.h>
25 # include <AliMCEvent.h>
27 # include <AliCentrality.h>
32 class AliMultSelection;
161 AliError(
"No analysis manager to connect to.");
165 dynamic_cast<AliAODHandler*
>(mgr->GetOutputEventHandler());
167 AliError(
"No AOD output handler!");
175 mgr->ConnectInput(
this, 0, mgr->GetCommonInputContainer());
183 dynamic_cast<AliAODHandler*
>(am->GetOutputEventHandler());
185 AliWarning(
"No AOD output handler set in analysis manager");
193 ah->AddBranch(
"AliAODSimpleHeader", &obj);
199 const Double_t maxDispersion = 0.04;
201 const AliVVertex* ip =
event->GetPrimaryVertex();
202 if (ip->GetNContributors() <= 0)
return false;
204 if (ip->IsFromVertexerZ()) {
207 ip->GetCovarianceMatrix(covar);
208 Double_t sigmaZ = TMath::Sqrt(covar[5]);
209 if (sigmaZ >= maxZError) {
210 AliWarningF(
"IPz resolution = %f >= %f", sigmaZ, maxZError);
215 if (ip->IsA()->InheritsFrom(AliVertex::Class())) {
216 const AliVertex* ipv =
static_cast<const AliVertex*
>(ip);
218 if (ipv->GetDispersion() >= maxDispersion) {
219 AliWarningF(
"IP dispersion = %f >= %f",
220 ipv->GetDispersion(), maxDispersion);
230 if (!event)
return false;
233 AliGenEventHeader* genHeader =
event->GenEventHeader();
235 AliWarning(
"No generator header found in MC event");
238 genHeader->PrimaryVertex(genIP);
240 AliCollisionGeometry* geomHeader =
241 dynamic_cast<AliCollisionGeometry*
>(genHeader);
243 genHeader->IsA()->InheritsFrom(AliGenCocktailEventHeader::Class())) {
246 AliGenCocktailEventHeader* ctHeader =
247 static_cast<AliGenCocktailEventHeader*
>(genHeader);
248 TIter next(ctHeader->GetHeaders());
249 AliGenEventHeader* subHeader = 0;
250 while ((subHeader = static_cast<AliGenEventHeader*>(next()))) {
251 geomHeader =
dynamic_cast<AliCollisionGeometry*
>(subHeader);
252 if (geomHeader)
break;
255 if (!geomHeader)
return true;
273 AliMultSelection* cent =
274 static_cast<AliMultSelection*
>(
event->FindListObject(
"MultSelection"));
276 AliWarning(
"No centrality in event");
280 Double_t centPer = cent->GetMultiplicityPercentile(
"V0M");
281 if (centPer < -safety)
return false;
282 if (centPer < +safety) centPer = safety;
283 else if (centPer > 100-safety) centPer = 100-safety;
287 AliMultEstimator* estTracklets = cent->GetEstimator(
"SPDTracklets");
296 AliCentrality*
c =
event->GetCentrality();
297 if (!c)
return false;
307 AliVEvent*
event = InputEvent();
315 if (!simOK || !recOK)
return;
319 dynamic_cast<AliAODHandler*
>(am->GetOutputEventHandler());
323 ah->SetFillAOD(kTRUE);
329 Printf(
"%s: %s", ClassName(), GetName());
330 Printf(
" Task to copy content of header to a simplified header");
337 ::Error(
"Create",
"No analysis manager to connect to.");
341 dynamic_cast<AliAODHandler*
>(mgr->GetOutputEventHandler());
343 ::Error(
"Create",
"No AOD output handler!");