]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Next step towards supporting multiple primary vertices in ESD. Every primary vertex...
authorbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 31 Mar 2009 09:18:34 +0000 (09:18 +0000)
committerbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 31 Mar 2009 09:18:34 +0000 (09:18 +0000)
STEER/AliESDEvent.cxx
STEER/AliESDEvent.h
STEER/AliESDVertex.cxx
STEER/AliESDVertex.h
STEER/AliESDtrack.cxx
STEER/AliESDtrack.h

index 1ead29b9cc9619182c098fa2b46f372a2091025c..de80972b7c4b8fda3fac1435ab419c0e18466b0b 100644 (file)
@@ -864,18 +864,24 @@ Bool_t AliESDEvent::Clean(Float_t *cleanPars) {
   return rc;
 }
 
-void  AliESDEvent::AddPileupVertexSPD(const AliESDVertex *vtx) 
+Char_t  AliESDEvent::AddPileupVertexSPD(const AliESDVertex *vtx) 
 {
     // Add a pileup primary vertex reconstructed with SPD
     TClonesArray &ftr = *fSPDPileupVertices;
-    new(ftr[fSPDPileupVertices->GetEntriesFast()]) AliESDVertex(*vtx);
+    Char_t n=Char_t(ftr.GetEntriesFast());
+    AliESDVertex *vertex = new(ftr[n]) AliESDVertex(*vtx);
+    vertex->SetID(n);
+    return n;
 }
 
-void  AliESDEvent::AddPileupVertexTracks(const AliESDVertex *vtx) 
+Char_t  AliESDEvent::AddPileupVertexTracks(const AliESDVertex *vtx) 
 {
     // Add a pileup primary vertex reconstructed with SPD
     TClonesArray &ftr = *fTrkPileupVertices;
-    new(ftr[fTrkPileupVertices->GetEntriesFast()]) AliESDVertex(*vtx);
+    Char_t n=Char_t(ftr.GetEntriesFast());
+    AliESDVertex *vertex = new(ftr[n]) AliESDVertex(*vtx);
+    vertex->SetID(n);
+    return n;
 }
 
 Int_t  AliESDEvent::AddTrack(const AliESDtrack *t) 
index a2b9e1c2ef783745f1c84d389d3a89c8091e4f2c..33b548ad773733e9c98b96afa69ed8c4bf453023 100644 (file)
@@ -215,12 +215,12 @@ public:
   const AliESDVertex *GetPileupVertexSPD(Int_t i) const {
     return (const AliESDVertex *)fSPDPileupVertices->UncheckedAt(i);
   }
-  void  AddPileupVertexSPD(const AliESDVertex *vtx);
+  Char_t  AddPileupVertexSPD(const AliESDVertex *vtx);
 
   const AliESDVertex *GetPileupVertexTracks(Int_t i) const {
     return (const AliESDVertex *)fTrkPileupVertices->UncheckedAt(i);
   }
-  void  AddPileupVertexTracks(const AliESDVertex *vtx);
+  Char_t  AddPileupVertexTracks(const AliESDVertex *vtx);
 
   AliESDtrack *GetTrack(Int_t i) const {
     return (AliESDtrack *)fTracks->UncheckedAt(i);
index 121369ece80c8d7c523872305fa8304077395403..e6750449f7266ebab470bf8e2d0abdc25d5987c9 100644 (file)
@@ -41,7 +41,8 @@ AliESDVertex::AliESDVertex() :
   fCovXZ(0),
   fCovYZ(0),
   fCovZZ(5.3*5.3),
-  fChi2(0)
+  fChi2(0),
+  fID(-1)   // ID=-1 means the vertex with the biggest number of contributors 
 {
   //
   // Default Constructor, set everything to 0
@@ -59,7 +60,8 @@ AliESDVertex::AliESDVertex(Double_t positionZ,Double_t sigmaZ,
   fCovXZ(0),
   fCovYZ(0),
   fCovZZ(sigmaZ*sigmaZ),
-  fChi2(0)
+  fChi2(0),
+  fID(-1)   // ID=-1 means the vertex with the biggest number of contributors 
 {
   //
   // Constructor for vertex Z from pixels
@@ -84,7 +86,8 @@ AliESDVertex::AliESDVertex(Double_t position[3],Double_t covmatrix[6],
   fCovXZ(covmatrix[3]),
   fCovYZ(covmatrix[4]),
   fCovZZ(covmatrix[5]),
-  fChi2(chi2)
+  fChi2(chi2),
+  fID(-1)   // ID=-1 means the vertex with the biggest number of contributors 
 {
   //
   // Constructor for vertex in 3D from tracks
@@ -104,7 +107,8 @@ AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
   fCovXZ(0),
   fCovYZ(0),
   fCovZZ(sigma[2]*sigma[2]),
-  fChi2(0)
+  fChi2(0),
+  fID(-1)   // ID=-1 means the vertex with the biggest number of contributors 
 {
   //
   // Constructor for smearing of true position
@@ -124,7 +128,8 @@ AliESDVertex::AliESDVertex(Double_t position[3],Double_t sigma[3],
   fCovXZ(0),
   fCovYZ(0),
   fCovZZ(sigma[2]*sigma[2]),
-  fChi2(0)
+  fChi2(0),
+  fID(-1)   // ID=-1 means the vertex with the biggest number of contributors 
 {
   //
   // Constructor for Pb-Pb
@@ -147,7 +152,8 @@ AliESDVertex::AliESDVertex(const AliESDVertex &source):
   fCovXZ(source.fCovXZ),
   fCovYZ(source.fCovYZ),
   fCovZZ(source.fCovZZ),
-  fChi2(source.fChi2)
+  fChi2(source.fChi2),
+  fID(source.fID)
 {
   //
   // Copy constructor
@@ -171,6 +177,7 @@ AliESDVertex &AliESDVertex::operator=(const AliESDVertex &source){
     fCovYZ = source.fCovYZ;
     fCovZZ = source.fCovZZ;
     fChi2 = source.fChi2;
+    fID = source.fID;
   }
   return *this;
 }
index 973d843fd3bc2fdbca95c328e90f05ae2eaeed7c..5ed40a92f5cbef075214e428d951ddff9db560d9 100644 (file)
@@ -74,17 +74,22 @@ class AliESDVertex : public AliVertex {
 
   void     Reset() { SetToZero(); SetName("Vertex"); }
 
+  void     SetID(Char_t id) {fID=id;}
+  Char_t   GetID() const {return fID;}
+
  protected:
 
   Double32_t fCovXX,fCovXY,fCovYY,fCovXZ,fCovYZ,fCovZZ;  // vertex covariance matrix
   Double32_t fSNR[3];  // S/N ratio
   Double32_t fChi2;  // chi2 of vertex fit
 
+  Char_t fID;       // ID of this vertex within an ESD event
+
  private:
 
   void SetToZero();
 
-  ClassDef(AliESDVertex,6)  // Class for Primary Vertex
+  ClassDef(AliESDVertex,7)  // Class for Primary Vertex
 };
 
 #endif
index e62d1fe183fad607d5979bddbc2070ea9d49560a..5503629e9a04027fa47ec5be4a6528f3e04ec0fb 100644 (file)
@@ -213,8 +213,8 @@ AliESDtrack::AliESDtrack() :
   fTRDncls0(0),
   fTRDntracklets(0),
   fTRDnSlices(0),
-  fTRDslices(0x0)
-  
+  fTRDslices(0x0),
+  fVertexID(-2) // -2 means an orphan track 
 {
   //
   // The default ESD constructor 
@@ -301,7 +301,8 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fTRDncls0(track.fTRDncls0),
   fTRDntracklets(track.fTRDntracklets),
   fTRDnSlices(track.fTRDnSlices),
-  fTRDslices(0x0)
+  fTRDslices(0x0),
+  fVertexID(track.fVertexID)
 {
   //
   //copy constructor
@@ -400,7 +401,8 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   fTRDncls0(0),
   fTRDntracklets(0),
   fTRDnSlices(0),
-  fTRDslices(0x0)
+  fTRDslices(0x0),
+  fVertexID(-2)  // -2 means an orphan track
 {
   //
   // ESD track from AliVTrack.
@@ -518,7 +520,8 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fTRDncls0(0),
   fTRDntracklets(0),
   fTRDnSlices(0),
-  fTRDslices(0x0)
+  fTRDslices(0x0),
+  fVertexID(-2)  // -2 means an orphan track
 {
   //
   // ESD track from TParticle
@@ -824,6 +827,7 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
   fTRDncls   = source.fTRDncls;       
   fTRDncls0  = source.fTRDncls0;      
   fTRDntracklets  = source.fTRDntracklets; 
+  fVertexID = source.fVertexID;
   return *this;
 }
 
@@ -1030,6 +1034,8 @@ void AliESDtrack::MakeMiniESDtrack(){
   // reset global track chi2
   fGlobalChi2 = 0;
 
+  fVertexID = -2; // an orphan track
+
   delete fFriendTrack; fFriendTrack = 0;
 } 
 //_______________________________________________________________________
@@ -1804,6 +1810,7 @@ Double_t b, Double_t maxd, AliExternalTrackParam *cParam) {
   if (!fCp->Update(p,c)) {delete fCp; fCp=0; return kFALSE;}
   //----------------------------------------
 
+  fVertexID = vtx->GetID();
 
   if (!cParam) return kTRUE;
 
index 9db4d9ee9bd7ba7b5cdb3268b451704953971896..aea5a866282ca03ca97a49b7059ba3b181b25e72 100644 (file)
@@ -74,6 +74,8 @@ public:
   void MakeMiniESDtrack();
   void SetID(Int_t id) { fID =id;}
   Int_t GetID() const { return fID;}
+  void SetVertexID(Char_t id) { fVertexID=id;}
+  Char_t GetVertexID() const { return fVertexID;}
   void SetStatus(ULong_t flags) {fFlags|=flags;}
   void ResetStatus(ULong_t flags) {fFlags&=~flags;}
   Bool_t UpdateTrackParams(const AliKalmanTrack *t, ULong_t flags);
@@ -414,11 +416,12 @@ protected:
   Double32_t *fTRDslices;  //[fTRDnSlices] 
 
   Char_t  fTRDTimBin[kTRDnPlanes];   // Time bin of Max cluster from all six planes
+  Char_t  fVertexID; // ID of the primary vertex this track belongs to
 
  private:
 
   AliESDtrack & operator=(const AliESDtrack & );
-  ClassDef(AliESDtrack,48)  //ESDtrack 
+  ClassDef(AliESDtrack,49)  //ESDtrack 
 };
 
 #endif