X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliAODEvent.h;h=e9f09fba50b49d5d574af85b1789b8252303b086;hb=7d6298844d815257941b991f031d2075ca375dc2;hp=661fe7c5150778225b01c4450d96050bea704b64;hpb=27346f690e6b1cd6b8a229df92f56a04ccab52ba;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliAODEvent.h b/STEER/AliAODEvent.h index 661fe7c5150..e9f09fba50b 100644 --- a/STEER/AliAODEvent.h +++ b/STEER/AliAODEvent.h @@ -29,9 +29,11 @@ #include "AliAODCaloCluster.h" #include "AliAODPmdCluster.h" #include "AliAODFmdCluster.h" +#include "AliAODDimuon.h" class TTree; class TFolder; +class AliCentrality; class AliAODEvent : public AliVEvent { @@ -48,6 +50,7 @@ class AliAODEvent : public AliVEvent { kAODCaloClusters, kAODFmdClusters, kAODPmdClusters, + kAODDimuons, kAODListN }; @@ -59,7 +62,7 @@ class AliAODEvent : public AliVEvent { void AddObject(TObject *obj); void RemoveObject(TObject *obj); - TObject *FindListObject(const char *objName) ; + TObject *FindListObject(const char *objName) const; TList *GetList() const { return fAODObjects; } // -- Header @@ -78,7 +81,7 @@ class AliAODEvent : public AliVEvent { void SetMagneticField(Double_t mf){if (fHeader) fHeader->SetMagneticField(mf);} void SetMuonMagFieldScale(Double_t mf){if (fHeader) fHeader->SetMuonMagFieldScale(mf);} void SetDiamond(Float_t xy[2],Float_t cov[3]){if (fHeader) fHeader->SetDiamond(xy,cov);} - + void SetDiamondZ(Float_t z, Float_t sig2z){if (fHeader) fHeader->SetDiamondZ(z,sig2z);} Int_t GetRunNumber() const {return fHeader ? fHeader->GetRunNumber() : -999;} UInt_t GetPeriodNumber() const {return fHeader ? fHeader->GetPeriodNumber() : 0;} UInt_t GetOrbitNumber() const {return fHeader ? fHeader->GetOrbitNumber() : 0;} @@ -87,7 +90,11 @@ class AliAODEvent : public AliVEvent { Double_t GetMuonMagFieldScale() const {return fHeader ? fHeader->GetMuonMagFieldScale() : -999.;} Double_t GetDiamondX() const {return fHeader ? fHeader->GetDiamondX() : -999.;} Double_t GetDiamondY() const {return fHeader ? fHeader->GetDiamondY() : -999.;} + Double_t GetDiamondZ() const {return fHeader ? fHeader->GetDiamondZ() : -999.;} void GetDiamondCovXY(Float_t cov[3]) const {cov[0]=-999.; if(fHeader) fHeader->GetDiamondCovXY(cov);} + Double_t GetSigma2DiamondX() const {return fHeader ? fHeader->GetSigma2DiamondX() : -999.;} + Double_t GetSigma2DiamondY() const {return fHeader ? fHeader->GetSigma2DiamondY() : -999.;} + Double_t GetSigma2DiamondZ() const {return fHeader ? fHeader->GetSigma2DiamondZ() : -999.;} void SetEventType(UInt_t eventType){fHeader->SetEventType(eventType);} void SetTriggerMask(ULong64_t n) {fHeader->SetTriggerMask(n);} @@ -105,22 +112,33 @@ class AliAODEvent : public AliVEvent { // -- Tracks TClonesArray *GetTracks() const { return fTracks; } - Int_t GetNTracks() const { return fTracks->GetEntriesFast(); } + Int_t GetNTracks() const { return fTracks? fTracks->GetEntriesFast() : 0; } Int_t GetNumberOfTracks() const { return GetNTracks(); } - AliAODTrack *GetTrack(Int_t nTrack) const { return (AliAODTrack*)fTracks->UncheckedAt(nTrack); } + AliAODTrack *GetTrack(Int_t nTrack) const { return fTracks ? (AliAODTrack*)fTracks->UncheckedAt(nTrack):0; } Int_t AddTrack(const AliAODTrack* trk) {new((*fTracks)[fTracks->GetEntriesFast()]) AliAODTrack(*trk); return fTracks->GetEntriesFast()-1;} Int_t GetMuonTracks(TRefArray *muonTracks) const; + Int_t GetNumberOfMuonTracks() const; // -- Vertex TClonesArray *GetVertices() const { return fVertices; } - Int_t GetNumberOfVertices() const { return fVertices->GetEntriesFast(); } - AliAODVertex *GetVertex(Int_t nVertex) const { return (AliAODVertex*)fVertices->UncheckedAt(nVertex); } + Int_t GetNumberOfVertices() const { return fVertices?fVertices->GetEntriesFast():0; } + AliAODVertex *GetVertex(Int_t nVertex) const { return fVertices?(AliAODVertex*)fVertices->At(nVertex):0; } Int_t AddVertex(const AliAODVertex* vtx) {new((*fVertices)[fVertices->GetEntriesFast()]) AliAODVertex(*vtx); return fVertices->GetEntriesFast()-1;} // primary vertex virtual AliAODVertex *GetPrimaryVertex() const { return GetVertex(0); } + virtual AliAODVertex *GetPrimaryVertexSPD() const; + + // -- Pileup vertices + Int_t GetNumberOfPileupVerticesTracks() const; + Int_t GetNumberOfPileupVerticesSPD() const; + virtual AliAODVertex *GetPileupVertexSPD(Int_t iV=0) const; + virtual AliAODVertex *GetPileupVertexTracks(Int_t iV=0) const; + 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; + // V0 TClonesArray *GetV0s() const { return fV0s; } @@ -137,8 +155,8 @@ class AliAODEvent : public AliVEvent { {new((*fCascades)[fCascades->GetEntriesFast()]) AliAODcascade(*cascade); return fCascades->GetEntriesFast()-1;} // -- EMCAL and PHOS Cluster - TClonesArray *GetCaloClusters() const { return fCaloClusters; } - Int_t GetNCaloClusters() const { return fCaloClusters->GetEntriesFast(); } + TClonesArray *GetCaloClusters() const { return fCaloClusters; } + Int_t GetNumberOfCaloClusters() const { return fCaloClusters->GetEntriesFast(); } AliAODCaloCluster *GetCaloCluster(Int_t nCluster) const { return (AliAODCaloCluster*)fCaloClusters->UncheckedAt(nCluster); } Int_t AddCaloCluster(const AliAODCaloCluster* clus) {new((*fCaloClusters)[fCaloClusters->GetEntriesFast()]) AliAODCaloCluster(*clus); return fCaloClusters->GetEntriesFast()-1;} @@ -163,8 +181,8 @@ class AliAODEvent : public AliVEvent { // -- Jet TClonesArray *GetJets() const { return fJets; } - Int_t GetNJets() const { return fJets->GetEntriesFast(); } - AliAODJet *GetJet(Int_t nJet) const { return (AliAODJet*)fJets->UncheckedAt(nJet); } + Int_t GetNJets() const { return fJets?fJets->GetEntriesFast():0; } + AliAODJet *GetJet(Int_t nJet) const { return fJets?(AliAODJet*)fJets->UncheckedAt(nJet):0; } Int_t AddJet(const AliAODJet* vtx) {new((*fJets)[fJets->GetEntriesFast()]) AliAODJet(*vtx); return fJets->GetEntriesFast()-1;} @@ -174,7 +192,18 @@ class AliAODEvent : public AliVEvent { // -- Calorimeter Cells AliAODCaloCells *GetEMCALCells() const { return fEmcalCells; } AliAODCaloCells *GetPHOSCells() const { return fPhosCells; } + const TGeoHMatrix* GetPHOSMatrix(Int_t /*i*/) const { return NULL; } + const TGeoHMatrix* GetEMCALMatrix(Int_t /*i*/)const { return NULL; } + + // -- Dimuons + TClonesArray *GetDimuons() const { return fDimuons; } + Int_t GetNDimuons() const { return fDimuons->GetEntriesFast(); } + Int_t GetNumberOfDimuons() const { return GetNDimuons(); } + AliAODDimuon *GetDimuon(Int_t nDimu) const { return (AliAODDimuon*)fDimuons->UncheckedAt(nDimu); } + Int_t AddDimuon(const AliAODDimuon* dimu) + {new((*fDimuons)[fDimuons->GetEntriesFast()]) AliAODDimuon(*dimu); return fDimuons->GetEntriesFast()-1;} + // -- Services void CreateStdContent(); void SetStdNames(); @@ -187,16 +216,25 @@ class AliAODEvent : public AliVEvent { Int_t jetSize = 0, Int_t caloClusSize = 0, Int_t fmdClusSize = 0, - Int_t pmdClusSize = 0 + Int_t pmdClusSize = 0, + Int_t dimuonArrsize =0 ); void ClearStd(); + void Reset() {ClearStd();} void ReadFromTree(TTree *tree, Option_t* opt = ""); void WriteToTree(TTree* tree) const {tree->Branch(fAODObjects);} void Print(Option_t *option="") const; void MakeEntriesReferencable(); static void AssignIDtoCollection(TCollection* col); - private : + + //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;} + AliCentrality* GetCentrality() {return fHeader->GetCentralityP();} + private : TList *fAODObjects; // list of AODObjects TFolder *fAODFolder; // folder structure of branches @@ -214,10 +252,11 @@ class AliAODEvent : public AliVEvent { TClonesArray *fCaloClusters; //! calorimeter clusters TClonesArray *fFmdClusters; //! FMDclusters TClonesArray *fPmdClusters; //! PMDclusters + TClonesArray *fDimuons; //! dimuons static const char* fAODListName[kAODListN]; //! - ClassDef(AliAODEvent, 5); + ClassDef(AliAODEvent, 6); }; #endif