#include <TTree.h>
#include <TArrayF.h>
-class TList;
#include "AliVEvent.h"
// some includes for delegated methods
#include "AliESDtrack.h"
// same for AliESDVertex (which is a AliVVertex)
#include "AliESDVertex.h"
+// same for CaloCells and CaloClusters (which is a AliVCaloCells, AliVCluster)
+#include "AliESDCaloCluster.h"
+#include "AliESDCaloCells.h"
+
+#include "AliTOFHeader.h"
+
+#include "AliESDVZERO.h"
class AliESDfriend;
-class AliESDVZERO;
class AliESDHLTtrack;
class AliESDVertex;
class AliESDPmdTrack;
class AliESDFMD;
class AliESDkink;
-class AliESDCaloCluster;
-class AliESDCaloCells;
class AliESDv0;
class AliMultiplicity;
class AliRawDataErrorLog;
class AliESDMuonTrack;
class AliESD;
class AliESDcascade;
+class AliCentrality;
class TRefArray;
class AliESDACORDE;
class AliESDHLTDecision;
+class TList;
+class TString;
+
+
class AliESDEvent : public AliVEvent {
public:
kPHOSCells,
kErrorLogs,
kESDACORDE,
+ kTOFHeader,
kESDListN
};
// Delegated methods for fESDRun
void SetRunNumber(Int_t n) {if(fESDRun) fESDRun->SetRunNumber(n);}
Int_t GetRunNumber() const {return fESDRun?fESDRun->GetRunNumber():-1;}
- void SetPeriodNumber(UInt_t n){if(fESDRun) fESDRun->SetPeriodNumber(n);}
+ void SetPeriodNumber(UInt_t n){
+ if(fESDRun) fESDRun->SetPeriodNumber(n);
+ if(fHeader) fHeader->SetPeriodNumber(n);
+ }
UInt_t GetPeriodNumber() const {return fESDRun?fESDRun->GetPeriodNumber():0;}
void SetMagneticField(Double_t mf){if(fESDRun) fESDRun->SetMagneticField(mf);}
Double_t GetMagneticField() const {return fESDRun?fESDRun->GetMagneticField():0;}
void SetDiamond(const AliESDVertex *vertex) { if(fESDRun) fESDRun->SetDiamond(vertex);}
Double_t GetDiamondX() const {return fESDRun?fESDRun->GetDiamondX():0;}
Double_t GetDiamondY() const {return fESDRun?fESDRun->GetDiamondY():0;}
+ Double_t GetDiamondZ() const {return fESDRun?fESDRun->GetDiamondZ():0;}
Double_t GetSigma2DiamondX() const {return fESDRun?fESDRun->GetSigma2DiamondX():0;}
Double_t GetSigma2DiamondY() const {return fESDRun?fESDRun->GetSigma2DiamondY():0;}
+ Double_t GetSigma2DiamondZ() const {return fESDRun?fESDRun->GetSigma2DiamondZ():0;}
void GetDiamondCovXY(Float_t cov[3]) const {if(fESDRun) fESDRun->GetDiamondCovXY(cov);}
void SetTriggerClass(const char*name, Int_t index) {if(fESDRun) fESDRun->SetTriggerClass(name,index);}
void SetPHOSMatrix(TGeoHMatrix*matrix, Int_t i) {if(fESDRun) fESDRun->SetPHOSMatrix(matrix,i);}
Bool_t IsUniformBMap() const {return fESDRun?fESDRun->TestBit(AliESDRun::kUniformBMap):kFALSE;}
//
Bool_t InitMagneticField() const {return fESDRun?fESDRun->InitMagneticField():kFALSE;}
+ void SetT0spread(Float_t *t) const {if(fESDRun) fESDRun->SetT0spread(t);}
// HEADER
AliESDHeader* GetHeader() const {return fHeader;}
// ZDC CKB: put this in the header?
AliESDZDC* GetESDZDC() const {return fESDZDC;}
+ void SetZDCData(AliESDZDC * obj);
// Delegated methods for fESDZDC
Double_t GetZDCN1Energy() const {return fESDZDC?fESDZDC->GetZDCN1Energy():0;}
Double_t GetZDCP2Energy() const {return fESDZDC?fESDZDC->GetZDCP2Energy():0;}
Double_t GetZDCEMEnergy(Int_t i=0) const {return fESDZDC?fESDZDC->GetZDCEMEnergy(i):0;}
Int_t GetZDCParticipants() const {return fESDZDC?fESDZDC->GetZDCParticipants():0;}
+ AliCentrality* GetCentrality();
+
+
void SetZDC(Float_t n1Energy, Float_t p1Energy, Float_t em1Energy, Float_t em2Energy,
Float_t n2Energy, Float_t p2Energy, Int_t participants, Int_t nPartA,
Int_t nPartC, Double_t b, Double_t bA, Double_t bC, UInt_t recoflag)
{if(fESDZDC) fESDZDC->SetZDC(n1Energy, p1Energy, em1Energy, em2Energy, n2Energy, p2Energy,
participants, nPartA, nPartC, b, bA, bC, recoflag);}
- void SetZDCScaler(UInt_t *counts) {if(fESDZDC) fESDZDC->SetZDCScaler(counts);}
-
-
- // FMD
+ // FMD
void SetFMDData(AliESDFMD * obj);
AliESDFMD *GetFMDData() const { return fESDFMD; }
const AliESDVertex *GetPrimaryVertex() const;
+
+
+ void SetTOFHeader(const AliTOFHeader * tofEventTime);
+ const AliTOFHeader *GetTOFHeader() const {return fTOFHeader;}
+ Float_t GetEventTimeSpread() const {if (fTOFHeader) return fTOFHeader->GetT0spread(); else return 0.;}
+ Float_t GetTOFTimeResolution() const {if (fTOFHeader) return fTOFHeader->GetTOFResolution(); else return 0.;}
+
+
void SetMultiplicity(const AliMultiplicity *mul);
const AliMultiplicity *GetMultiplicity() const {return fSPDMult;}
-
+ void EstimateMultiplicity(Int_t &tracklets,Int_t &trITSTPC,Int_t &trITSSApure,
+ Double_t eta=1.,Bool_t useDCAFlag=kTRUE,Bool_t useV0Flag=kTRUE) const;
Bool_t Clean(Float_t *cleanPars);
Bool_t RemoveKink(Int_t i) const;
return (const AliESDVertex *)(fSPDPileupVertices?fSPDPileupVertices->UncheckedAt(i):0x0);
}
Char_t AddPileupVertexSPD(const AliESDVertex *vtx);
- Bool_t IsPileupFromSPD(Int_t ncont=2, Double_t distz=1., Double_t nSigmaDeltaZ=3., Double_t nSigmaXY=2., Int_t option=0) const;
-
const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
return (const AliESDVertex *)(fTrkPileupVertices?fTrkPileupVertices->UncheckedAt(i):0x0);
}
Char_t AddPileupVertexTracks(const AliESDVertex *vtx);
+ virtual Bool_t IsPileupFromSPD(Int_t minContributors=3,
+ Double_t minZdist=0.8,
+ Double_t nSigmaZdist=3.,
+ Double_t nSigmaDiamXY=2.,
+ Double_t nSigmaDiamZ=5.) const;
+
+ virtual Bool_t IsPileupFromSPDInMultBins() const;
+
AliESDtrack *GetTrack(Int_t i) const {
return (AliESDtrack *)(fTracks?fTracks->UncheckedAt(i):0x0);
}
AliESDCaloCells *GetEMCALCells() const {return fEMCALCells; }
AliESDCaloCells *GetPHOSCells() const {return fPHOSCells; }
+ AliESDCaloTrigger* GetCaloTrigger(TString calo) const
+ {
+ if (calo.Contains("EMCAL")) return fEMCALTrigger;
+ else
+ return fPHOSTrigger;
+ }
+
AliRawDataErrorLog *GetErrorLog(Int_t i) const {
return (AliRawDataErrorLog *)(fErrorLogs?fErrorLogs->UncheckedAt(i):0x0);
}
Int_t GetNumberOfErrorLogs() const {return fErrorLogs?fErrorLogs->GetEntriesFast():0;}
-
- void AddPHOSTriggerPosition(TArrayF array) { if(fPHOSTrigger) fPHOSTrigger->AddTriggerPosition(array); }
- void AddPHOSTriggerAmplitudes(TArrayF array) { if(fPHOSTrigger) fPHOSTrigger->AddTriggerAmplitudes(array);}
- void AddEMCALTriggerPosition(TArrayF array) { if(fEMCALTrigger) fEMCALTrigger->AddTriggerPosition(array); }
- void AddEMCALTriggerAmplitudes(TArrayF array){ if(fEMCALTrigger) fEMCALTrigger->AddTriggerAmplitudes(array); }
-
Int_t GetNumberOfPileupVerticesSPD() const {
return (fSPDPileupVertices?fSPDPileupVertices->GetEntriesFast():0);
}
void SetUseOwnList(Bool_t b){fUseOwnList = b;}
Bool_t GetUseOwnList() const {return fUseOwnList;}
-
- // Remove this stuff CKB?
- //---------------------------------------------------
- Int_t GetNumberOfEMCALClusters() const {return fEMCALClusters;}
- void SetNumberOfEMCALClusters(Int_t clus) {fEMCALClusters = clus;}
- Int_t GetFirstEMCALCluster() const {return fFirstEMCALCluster;}
- void SetFirstEMCALCluster(Int_t index) {fFirstEMCALCluster = index;}
-
- Int_t GetNumberOfPHOSClusters() const {return fPHOSClusters;}
- void SetNumberOfPHOSClusters(Int_t part) { fPHOSClusters = part ; }
- void SetFirstPHOSCluster(Int_t index) { fFirstPHOSCluster = index ; }
- Int_t GetFirstPHOSCluster() const { return fFirstPHOSCluster ; }
- //-------------------------------------------------------
-
- TArrayF *GetEMCALTriggerPosition() const {return fEMCALTrigger?fEMCALTrigger->GetTriggerPosition():0x0;}
- TArrayF *GetEMCALTriggerAmplitudes() const {return fEMCALTrigger?fEMCALTrigger->GetTriggerAmplitudes():0x0;}
- TArrayF *GetPHOSTriggerPosition() const {return fPHOSTrigger?fPHOSTrigger->GetTriggerPosition():0x0;}
- TArrayF *GetPHOSTriggerAmplitudes() const {return fPHOSTrigger?fPHOSTrigger->GetTriggerAmplitudes():0x0;}
void ResetV0s() { if(fV0s) fV0s->Clear(); }
void ResetCascades() { if(fCascades) fCascades->Clear(); }
void AddObject(TObject* obj);
void ReadFromTree(TTree *tree, Option_t* opt = "");
- TObject* FindListObject(const char *name);
+ TObject* FindListObject(const char *name) const;
AliESD *GetAliESDOld(){return fESDOld;}
void WriteToTree(TTree* tree) const;
void GetStdContent();
void SetStdNames();
void CopyFromOldESD();
TList* GetList() const {return fESDObjects;}
+
+ //Following needed only for mixed event
+ virtual Int_t EventIndex(Int_t) const {return 0;}
+ virtual Int_t EventIndexForCaloCluster(Int_t) const {return 0;}
+ virtual Int_t EventIndexForPHOSCell(Int_t) const {return 0;}
+ virtual Int_t EventIndexForEMCALCell(Int_t) const {return 0;}
+
protected:
AliESDEvent(const AliESDEvent&);
static const char* fgkESDListName[kESDListN]; //!
- // Remove this stuff CKB
- Int_t fEMCALClusters; // Number of EMCAL clusters (subset of caloclusters)
- Int_t fFirstEMCALCluster; // First EMCAL cluster in the fCaloClusters list
-
- Int_t fPHOSClusters; // Number of PHOS clusters (subset of caloclusters)
- Int_t fFirstPHOSCluster; // First PHOS cluster in the fCaloClusters list
-
- ClassDef(AliESDEvent,10) //ESDEvent class
+ AliTOFHeader *fTOFHeader; //! event times (and sigmas) as estimated by TOF
+ // combinatorial algorithm.
+ // It contains also TOF time resolution
+ // and T0spread as written in OCDB
+ AliCentrality *fCentrality; //! Centrality for AA collision
+ ClassDef(AliESDEvent,13) //ESDEvent class
};
#endif