18 #include <TInterpreter.h> 91 fCurrentRunNumber(-1),
93 fOfflineTriggerMask(0),
94 fMultiInputHandler(0),
96 fTrackSelectionFactory(0),
113 fCurrentRunNumber(-1),
115 fOfflineTriggerMask(0),
116 fMultiInputHandler(0),
118 fTrackSelectionFactory(0),
165 if(&other ==
this)
return *
this;
192 if (
fDebug > 1)
printf(
"AnalysisTaskSE::ConnectInputData() \n");
204 AliWarning(
"No Input Event Handler connected, only MC Truth Event Handler") ;
206 AliError(
"No Input Event Handler connected") ;
219 if (
fDebug > 1)
printf(
"AnalysisTaskSE::CreateOutPutData() \n");
224 Bool_t merging = kFALSE;
271 fgAODV0s =
new TClonesArray(
"AliAODv0",500);
291 fgAODJets =
new TClonesArray(
"AliAODJet",500);
297 AliInfo(
"Replicating FMDClusters branch\n");
304 if (
fDebug > 1)
AliInfo(
"Replicating CaloClusters branch\n");
317 if (
fDebug > 1)
AliInfo(
"Replicating EMCAL Calo Trigger branches\n");
323 if (
fDebug > 1)
AliInfo(
"Replicating PHOS Calo Trigger branches\n");
374 printf(
" -> Executing sub-task %s\n", GetName());
377 printf(
"Task is active %5d\n", IsActive());
417 if (handler && aodH) {
461 TClonesArray* v0s = aod->
GetV0s();
475 TClonesArray* jets = aod->
GetJets();
493 TClonesArray* mcParticles = (TClonesArray*) (aod->
FindListObject(
"mcparticles"));
504 Int_t nMuonTrack[100];
505 for(Int_t imuon = 0; imuon < 100; imuon++) nMuonTrack[imuon] = 0;
507 for(Int_t ii=0; ii <
fgAODTracks->GetEntries(); ii++){
510 nMuonTrack[nMuons]= ii;
516 for(Int_t i = 0; i < nMuons; i++){
517 Int_t index0 = nMuonTrack[i];
518 for(Int_t j = i+1; j < nMuons; j++){
519 Int_t index1 = nMuonTrack[j];
520 tracksnew.At(index0)->ResetBit(kIsReferenced);
521 tracksnew.At(index0)->SetUniqueID(0);
522 tracksnew.At(index1)->ResetBit(kIsReferenced);
523 tracksnew.At(index1)->SetUniqueID(0);
524 new(dimuons[jDimuons++])
AliAODDimuon(tracksnew.At(index0),tracksnew.At(index1));
542 TClonesArray* mcparticles = (TClonesArray*) ((aodH->
GetEventToMerge())->FindListObject(
"mcparticles"));
544 Int_t npart = mcparticles->GetEntries();
547 for (Int_t i = 0; i < npart; i++) {
556 Int_t ntr = tracks->GetEntries();
558 for (Int_t i = 0; i < ntr; i++) {
564 for (Int_t i = 0; i < nc; i++)
567 track->ResetBit(kIsReferenced);
568 track->SetUniqueID(0);
575 Int_t ncl = clusters->GetEntries();
577 for (Int_t i = 0; i < ncl; i++) {
602 for (Int_t i = 0; i < ncells; i++)
672 for (Int_t i = 0; i < ncellsP; i++)
726 Int_t tsEMCAL[48][64], px, py, ts;
727 Float_t foEMCAL[48][64], am;
729 for (Int_t i = 0; i < 48; i++)
for (Int_t j = 0; j < 64; j++)
741 if (px > -1 && py > -1)
744 if (ts > -1) tsEMCAL[px][py] += ts;
747 if (am > -1) foEMCAL[px][py] += am;
758 if (px > -1 && py > -1)
761 if (ts > -1) tsEMCAL[px][py] += ts;
764 if (am > -1) foEMCAL[px][py] += am;
769 for (Int_t i = 0; i < 48; i++)
770 for (Int_t j = 0; j < 64; j++)
771 if (tsEMCAL[i][j] || foEMCAL[i][j]) nEntries++;
774 Int_t timesL0[10];
for (
int i = 0; i < 10; i++) timesL0[i] = -1;
776 for (Int_t i = 0; i < 48; i++)
777 for (Int_t j = 0; j < 64; j++)
778 if (tsEMCAL[i][j] || foEMCAL[i][j])
821 handler->
AddBranch(cname, addobj, fname);
833 Error(
"IsStandardAOD",
"No AOD handler. Please use AODEvent() to check this first");
849 Error(
"EventTag",
"Input handler not yet available. Call this in UserExec");
861 Error(
"LoadBranches",
"Input handler not available yet. Call this in UserExec");
866 TString taskbranches;
868 if (taskbranches.IsNull())
return;
869 TObjArray *arr = taskbranches.Tokenize(
",");
872 while ((obj=next())) mgr->
LoadBranch(obj->GetName());
const AliTOFHeader * GetTOFHeader() const
AliAnalysysTask - Class representing a basic analysis task. Any user-defined task should derive from...
virtual const AliEventTag * GetEventTag() const
Class for calorimeter cluster, EMCal and PHOS, data handling.
Bool_t AODIsReplicated() const
Bool_t NeedsTOFHeaderReplication() const
AliAODCaloTrigger * GetCaloTrigger(TString calo) const
TObjArray * GetTopTasks() const
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
Implementation of the Event Handler Interface for AOD.
TClonesArray * GetJets() const
Bool_t IsMuonTrack() const
Bool_t NeedsTrackletsBranchReplication() const
virtual const char * CurrentFileName()
TTree * fTreeA
AOD output Tree.
AliInputEventHandler * fMCEventHandler
! pointer to MCEventHandler
virtual const AliEventTag * EventTag() const
virtual void UserExec(Option_t *)
virtual TTree * GetTree() const
virtual UInt_t IsEventSelected()
static TClonesArray * fgAODV0s
! V0s for replication
Bool_t NeedsTracksBranchReplication() const
Double_t GetAmplitude(Short_t pos) const
virtual void SetAODIsReplicated()
void GetPosition(Int_t &col, Int_t &row) const
Access to position of the current fastor channel.
Class for calorimeter cell AOD data handling.
Bool_t IsConnected() const
static AliAnalysisManager * GetAnalysisManager()
AliAnalysysManager Manager analysis class. Allows creation of several analysis tasks and data contain...
static AliAODCaloCells * fgAODEmcalCells
! Emcal Cell replication
void LoadBranches() const
virtual Bool_t Next()
Forward to next trigger entry (fastor / L0 patch)
virtual AliVfriendEvent * GetVfriendEvent() const
Container with calorimeter trigger information in the AOD event.
TClonesArray * GetHMPIDrings() const
Bool_t PostData(Int_t iout, TObject *data, Option_t *option="")
Bool_t Add(Int_t col, Int_t row, Float_t amp, Float_t time, Int_t trgtimes[], Int_t ntrgtimes, Int_t trgts, Int_t trgbits)
Bool_t NeedsVZEROReplication() const
AliAODTracklets * GetTracklets() const
TClonesArray * GetTracks() const
AliAODVZERO * GetVZEROData() const
static AliAODCaloTrigger * fgAODPHOSTrigger
! Phos Trigger for replication
void DefineInput(Int_t islot, TClass *type)
AliAnalysisTask & operator=(const AliAnalysisTask &task)
Bool_t NeedsCaloTriggerBranchReplication() const
AliVHeader * GetHeader() const
Double_t GetTime(Short_t pos) const
UInt_t GetDebugLevel() const
Int_t GetMCLabel(Short_t pos) const
Bool_t NeedsHeaderReplication() const
virtual AliVEvent * InputEvent() const
static AliAODCaloCells * fgAODPhosCells
! Phos Cell replication
static AliTOFHeader * fgTOFHeader
! TOFHeader for replication
#define AliWarning(message)
Short_t GetCellNumber(Short_t pos) const
Int_t fEntry
Current entry in the chain.
AliVParticle realisation for MC Particles in the AOD.
AliVfriendEvent * fESDfriend
! ESD friend
static TClonesArray * fgAODFMDClusters
! FMDClusters for replication
static TClonesArray * fgAODPMDClusters
! PMDClusters for replication
static TClonesArray * fgAODTracks
! Tracks for replication
AOD class to store tracklets.
virtual Option_t * GetDataType() const
Bool_t IsStandard() const
Short_t GetCellPosition(Short_t cellNumber)
virtual void CreateOutputObjects()
static TClonesArray * fgAODDimuons
! Dimuons replication
Bool_t NeedsPMDClustersBranchReplication() const
TClonesArray * GetV0s() const
Bool_t NeedsFMDClustersBranchReplication() const
virtual void AddAODBranch(const char *cname, void *addobj, const char *fname="")
virtual TTree * GetTree() const
Bool_t NeedsV0sBranchReplication() const
Bool_t NeedsHMPIDBranchReplication() const
TList * fHistosQA
! Output histos for QA
static TClonesArray * fgAODHmpidRings
! HMPID replication
void CreateContainer(Short_t nCells)
AliAnalysysDataSlot Class representing a data slot of an analysis task. An analysis slot enforces a c...
Double_t GetEFraction(Short_t pos) const
Bool_t NeedsJetsBranchReplication() const
virtual void Exec(Option_t *option)
void GetAmplitude(Float_t &) const
Access to L0-amplitude of the current fastor channel.
TObject * FindListObject(const char *objName) const
void SetLabel(Int_t label)
Bool_t NeedsCaloClustersBranchReplication() const
static TClonesArray * fgAODCaloClusters
! CaloClusters for replication
AliAODCaloCells * GetPHOSCells() const
Int_t fCurrentRunNumber
! Current run number
AliAnalysisDataSlot * GetOutputSlot(Int_t islot) const
void ConnectMultiHandler()
static TClonesArray * fgAODVertices
! Vertices for replication
TObjArray * GetAcceptedTracks(const TClonesArray *const tracks)
AliMultiInputEventHandler * fMultiInputHandler
! pointer to multihandler
Short_t GetNumberOfCells() const
AliAODEvent * fOutputAOD
! AOD out
AliVEvent * fInputEvent
! VEvent Input
void DisconnectMultiHandler()
AliVEventHandler * GetOutputEventHandler() const
virtual Long64_t GetReadEntry() const
virtual AliVCuts * GetEventSelection() const =0
TObjArray * GetAcceptedTracks()
TClonesArray * GetPmdClusters() const
static AliAODTracklets * fgAODTracklets
! Tracklets for replication
static AliAODCaloTrigger * fgAODEMCALTrigger
! Emcal Trigger for replication
UInt_t fOfflineTriggerMask
Task processes collision candidates only.
void GetBranches(const char *type, TString &result) const
Bool_t SetCell(Short_t pos, Short_t cellNumber, Double_t amplitude, Double_t time, Int_t mclabel=-1, Double_t efrac=0., Bool_t isHG=kFALSE)
virtual Int_t GetRunNumber() const =0
TClonesArray * GetFmdClusters() const
AliAODDimuon: a class for AODs for the MUON Arm of the ALICE Experiment.
TClonesArray * GetCaloClusters() const
static AliAODVZERO * fgAODVZERO
! VZERO for replication
virtual Bool_t UserNotify()
void AddBranch(const char *cname, void *addobj, const char *fname="")
static TClonesArray * fgAODMCParticles
! MC Particles for replicatio
AliMCEvent * fMCEvent
! MC
static AliAODHeader * fgAODHeader
! Header for replication
AliVTrackSelection * fTrackSelection
track selection
Bool_t NeedsMCParticlesBranchReplication() const
static TClonesArray * fgAODJets
! Jets for replication
void LoadBranch(const char *n)
AliAODCaloCells * GetEMCALCells() const
Container class for AOD VZERO data.
Bool_t GetAutoBranchLoading() const
#define AliError(message)
void DefineOutput(Int_t islot, TClass *type)
virtual void UserCreateOutputObjects()
Bool_t NeedsVerticesBranchReplication() const
virtual AliVEvent * GetEvent() const
AliVEventHandler * fInputHandler
! Input Handler
virtual Bool_t IsStandardAOD() const
TClonesArray * GetVertices() const
void GetL1TimeSum(Int_t ×um) const
Get the L1 time sums (L1 ADC values) for the current fastor.
virtual Long64_t Entry() const
AliTrackSelectionFactory * fTrackSelectionFactory
track selection factory
void Allocate(Int_t size)
AOD track implementation of AliVTrack.
AliAnalysisTaskSE & operator=(const AliAnalysisTaskSE &other)
virtual AliVTrackSelection * CreateTrackCuts(DataType_t datatype) const =0
Bool_t NeedsDimuonsBranchReplication() const
virtual void ConnectInputData(Option_t *option="")