19 #include "AliAODInputHandler.h" 20 #include "AliMultiEventInputHandler.h" 21 #include "AliAnalysisManager.h" 22 #include "AliMixedEvent.h" 23 #include "AliAODEvent.h" 24 #include "AliGenEventHeader.h" 36 fSelectHybridTracks(0), fSelectPrimaryTracks(0),
37 fTrackFilterMask(0), fTrackFilterMaskComplementary(0),
38 fSelectFractionTPCSharedClusters(0), fCutTPCSharedClustersFraction(0)
56 if(!aodevent)
return kFALSE;
58 if (aodevent->GetPrimaryVertex() != NULL)
60 if(aodevent->GetPrimaryVertex()->GetNContributors() > 0)
66 if(aodevent->GetPrimaryVertexSPD() != NULL)
68 if(aodevent->GetPrimaryVertexSPD()->GetNContributors() > 0)
74 AliDebug(1,Form(
"Null number of contributors from bad vertex type:: %s",
75 aodevent->GetPrimaryVertex()->GetName()));
96 for(
Int_t i = 0; i < 4; i++)
98 TString names[] = {
"FilterBit_Hybrid",
"SPDHit",
"SharedCluster",
"Primary"};
101 Form(
"AOD CTS Cut %d, %s",i,names[i].
Data()),
120 const Int_t buffersize = 255;
121 char onePar[buffersize] ;
123 snprintf(onePar,buffersize,
"AOD Track: Hybrid %d, Filter bit %d, Complementary bit %d, Primary %d; ",
133 return new TObjString(parList) ;
142 TClonesArray * particles = NULL ;
145 if(aod) particles = (TClonesArray*) aod->FindListObject(
"mcparticles");
155 AliAODMCHeader *mch = NULL;
158 if(aod) mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
174 if ( nGenerators <= 0 )
return 0x0;
181 for(
Int_t igen = 0; igen < nGenerators; igen++)
183 AliGenEventHeader * eventHeader =
GetAODMCHeader()->GetCocktailHeader(igen) ;
185 TString name = eventHeader->GetName();
187 AliDebug(2,Form(
"AOD Event header %d name %s event header class %s: Select if contains <%s>",
215 Int_t id = track->GetID();
217 if(
id < 0 )
id = TMath::Abs(
id) - 1;
228 AliAODTrack *aodtrack = dynamic_cast <AliAODTrack*>(track);
230 if(!aodtrack)
return kFALSE;
232 AliDebug(2,Form(
"AOD track type: %d (primary %d), hybrid? %d",
234 aodtrack->IsHybridGlobalConstrainedGlobal()));
239 if (!aodtrack->IsHybridGlobalConstrainedGlobal())
return kFALSE ;
250 if (!accept && !acceptcomplement)
return kFALSE ;
259 if(!aodtrack->HasPointOnITSLayer(0) && !aodtrack->HasPointOnITSLayer(1))
return kFALSE ;
270 if ( ncls> 0 ) frac = nclsS / ncls ;
286 AliDebug(2,
"\t Remove not primary track");
291 AliDebug(2,
"\t accepted track!");
295 track->GetPxPyPz(pTrack) ;
312 if ( strcmp(input->GetName(),
"AliMixedEvent") == 0 )
314 AliMultiEventInputHandler* multiEH =
dynamic_cast<AliMultiEventInputHandler*
>((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
316 if (multiEH->GetFormat() == 0 )
319 }
else if (multiEH->GetFormat() == 1)
326 AliFatal(
"MultiEventHandler is NULL");
330 if (strcmp(input->GetName(),
"AliESDEvent") == 0)
333 }
else if (strcmp(input->GetName(),
"AliAODEvent") == 0)
346 AliAODInputHandler* aodIH =
dynamic_cast<AliAODInputHandler*
>((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
348 if (aodIH && aodIH->GetMergeEvents())
363 AliFatal(Form(
"STOP : Wrong data format: %s",input->GetName()));
virtual void SetMC(AliMCEvent *const mc)
Bool_t fSelectHybridTracks
Select CTS tracks of type hybrid.
AliVEvent * fOrgInputEvent
! Original input event, not from filtering
AliVEvent * fInputEvent
! pointer to esd or aod input.
ULong_t fTrackFilterMaskComplementary
Complementary Track selection bit, for AODs in case hybrid option selected.
virtual void SetInputEvent(AliVEvent *input)
Bool_t SelectTrack(AliVTrack *track, Double_t *pTrack)
Select AOD track using the AOD filter bits or predefined selection methods.
TList * fOutputContainer
! Output container with cut control histograms.
Int_t fEnergyHistogramNbins
Binning of the control histograms, min and max window.
Bool_t fFillCTS
Use data from CTS.
AliAODMCHeader * GetAODMCHeader() const
ULong_t fTrackFilterMask
Track selection bit, for AODs (any difference with track status?)
Class for event, clusters and tracks filtering and preparation for the AOD analysis.
Float_t fEnergyHistogramLimit[2]
Binning of the control histograms, number of bins.
Bool_t fSelectSPDHitTracks
Ensure that track hits SPD layers.
AliGenEventHeader * fGenEventHeader
! Event header
virtual void SetOutputEvent(AliAODEvent *aod)
Bool_t fSelectPrimaryTracks
Select CTS tracks of type primary.
TList * GetCreateControlHistograms()
virtual TObjString * GetListOfParameters()
Save parameters used for analysis in a string.
Base class for event, clusters and tracks filtering and preparation for the analysis.
TClonesArray * GetAODMCParticles() const
Float_t fCutTPCSharedClustersFraction
Fraction of TPC shared clusters to be accepted.
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TObjString * GetListOfParameters()
Save parameters used for analysis in a string.
void SetInputOutputMCEvent(AliVEvent *esd, AliAODEvent *aod, AliMCEvent *mc)
AliGenEventHeader * GetGenEventHeader() const
Int_t GetTrackID(AliVTrack *track)
TString fMCGenerEventHeaderToAccept
Accept events that contain at least this event header name.
Bool_t fSelectFractionTPCSharedClusters
Accept only TPC tracks with over a given fraction of shared clusters.
AliCaloTrackAODReader()
Default constructor. Initialize parameters.
Bool_t CheckForPrimaryVertex() const
virtual TList * GetCreateControlHistograms()
Int_t fDataType
Select MC: Kinematics, Data: ESD/AOD, MCData: Both.
TH1F * fhCTSAODTrackCutsPt[4]
! control histogram on the different CTS tracks selection cuts, pT