add common abstract interface classes for flat and fat ESDs
authormkrzewic <mikolaj.krzewicki@cern.ch>
Fri, 6 Jun 2014 13:32:55 +0000 (15:32 +0200)
committermkrzewic <mikolaj.krzewicki@cern.ch>
Fri, 6 Jun 2014 13:40:10 +0000 (15:40 +0200)
once ported, an analysis task (or any user code) will be able to run
online on the HLT and offline on standard ESDs. Porting consists mainly
of moving to the abstract base class interfaces:
  AliESDEvent -> AliVVevent
  AliESDtrack -> AliVVtrack
  AliExternalTrackParam->AliVVtrack
  AliVTrack -> AliVVtrack
  AliVertex->AliVVvertex
  AliKink ->AliVVkink

this way porting should be easy.

things to solve are friend access (to be added soon).

in 2 places: AliESDv0 and AliAODMCParticle we had to change the
signature of GetStatus() since now it is in the base class (AliVVtrack)
- this has to be cross checked with the authors of the code to decide
  what a common return type will be (we have it now ULong_t, hope nobody
wants to return negative values)! we just make it compile now.

34 files changed:
HLT/global/AliFlatESDEvent.cxx
HLT/global/AliFlatESDEvent.h
HLT/global/AliFlatESDTrack.h
HLT/global/AliFlatESDV0.h
HLT/global/AliFlatESDVertex.cxx [new file with mode: 0644]
HLT/global/AliFlatESDVertex.h
HLT/global/AliVVVZEROfriend.h [new file with mode: 0644]
PWG/EMCAL/AliAnalysisTaskEMCALClusterizeFast.cxx
PWGHF/vertexingHF/AliAnalysisVertexingHF.h
PWGJE/EMCALJetTasks/AliEmcalJet.h
PWGJE/UserTasks/AliAnalysisTaskJetProtonCorr.cxx
STEER/AOD/AliAODMCParticle.h
STEER/AOD/AliAODTrack.h
STEER/CMakelibSTEERBase.pkg
STEER/ESD/AliESDEvent.h
STEER/ESD/AliESDkink.h
STEER/ESD/AliESDv0.h
STEER/STEERBase/AliTPCPIDResponse.cxx
STEER/STEERBase/AliVEvent.h
STEER/STEERBase/AliVParticle.h
STEER/STEERBase/AliVTrack.h
STEER/STEERBase/AliVVertex.h
STEER/STEERBase/AliVVevent.cxx [new file with mode: 0644]
STEER/STEERBase/AliVVevent.h [new file with mode: 0644]
STEER/STEERBase/AliVVeventFriend.h [new file with mode: 0644]
STEER/STEERBase/AliVVkink.cxx [new file with mode: 0644]
STEER/STEERBase/AliVVkink.h [new file with mode: 0644]
STEER/STEERBase/AliVVtrack.cxx [new file with mode: 0644]
STEER/STEERBase/AliVVtrack.h [new file with mode: 0644]
STEER/STEERBase/AliVVv0.cxx [new file with mode: 0644]
STEER/STEERBase/AliVVv0.h [new file with mode: 0644]
STEER/STEERBase/AliVVvertex.cxx [new file with mode: 0644]
STEER/STEERBase/AliVVvertex.h [new file with mode: 0644]
TPC/Calib/AliTPCAnalysisTaskcalib.cxx

index d334bd6..fae6620 100644 (file)
@@ -231,7 +231,7 @@ Int_t AliFlatESDEvent::Fill(const AliESDEvent *esd, const Bool_t useESDFriends,
   return 0;
 }
 
-UInt_t AliFlatESDEvent::CountBits(Byte_t field, UInt_t mask) {
+UInt_t AliFlatESDEvent::CountBits(Byte_t field, UInt_t mask) const {
   // Count bits in field
   UInt_t count = 0; 
   UInt_t reg = 0x0; 
index 72da1f6..81fdc39 100644 (file)
 #include "Rtypes.h"
 #include "AliFlatESDTrack.h"
 #include "AliFlatESDV0.h"
+#include "AliVVevent.h"
+#include "AliFlatESDVertex.h"
 
 class AliESDEvent;
-struct AliFlatESDVertex;
 class AliESDVertex;
 class AliESDV0;
+class TString;
+class AliVVv0;
 
-class AliFlatESDEvent {
+class AliFlatESDEvent: public AliVVevent {
  public:
   // --------------------------------------------------------------------------------
   // -- Constructor / Destructors
@@ -55,19 +58,36 @@ class AliFlatESDEvent {
   // --------------------------------------------------------------------------------
   // -- Getter methods
 
-  AliFlatESDVertex* GetPrimaryVertexSPD(){
-    return (fPrimaryVertexMask & 0x1) ? reinterpret_cast<AliFlatESDVertex*>(fContent) : NULL;
+  const AliFlatESDVertex* GetPrimaryVertexSPD() const {
+    return (fPrimaryVertexMask & 0x1) ? reinterpret_cast<const AliFlatESDVertex*>(fContent) : NULL;
   } 
 
-  AliFlatESDVertex* GetPrimaryVertexTracks() { 
-    return (fPrimaryVertexMask & 0x2) ? reinterpret_cast<AliFlatESDVertex*>(fContent + CountBits(fPrimaryVertexMask, 0x1)) : NULL;
+  const AliFlatESDVertex* GetPrimaryVertexTracks() const { 
+    return (fPrimaryVertexMask & 0x2) ? reinterpret_cast<const AliFlatESDVertex*>(fContent + CountBits(fPrimaryVertexMask, 0x1)) : NULL;
   } 
 
   Int_t GetNumberOfV0s() {return fNV0s;}
 
-  Int_t GetNumberOfTracks() {return fNTracks;}
+  Int_t GetNumberOfTracks() const {return fNTracks;}
   
   AliFlatESDTrack *GetTracks() {return reinterpret_cast<AliFlatESDTrack*>(fContent + fTracksPointer);}
+
+  const AliVVvertex* GetPrimaryVertex() const {return NULL;}
+  const AliVVvertex* GetPrimaryVertexTPC() const {return NULL;}
+  AliFlatESDTrack* GetTrack(Int_t /*i*/) {return NULL;}
+  AliVVkink* GetKink(Int_t /*i*/) const {return NULL;}
+  AliFlatESDV0* GetV0(Int_t /*i*/) const {return NULL;}
+  Int_t GetNumberOfKinks() const {return 0;}
+  Int_t GetEventNumberInFile() const {return -1;}
+  const AliMultiplicity* GetMultiplicity() const {return NULL;} //by default SPDmult
+  Int_t GetRunNumber() const {return -1;}
+  TString GetFiredTriggerClasses() const {TString string; return string;}
+  TObject* FindListObject(const char* /*name*/) const {return NULL;}
+  ULong64_t GetTriggerMask() const {return 0;}
+  Double_t GetMagneticField() const {return 0;}
+  UInt_t GetTimeStamp() const { return 0;}
+  UInt_t GetEventSpecie() const { return 0;}
+
   
   // --------------------------------------------------------------------------------
   // -- Size methods
@@ -81,7 +101,7 @@ class AliFlatESDEvent {
   void FillPrimaryVertex(const AliESDVertex *v, Byte_t flag);
   Int_t FillNextTrack( const AliESDtrack* esdTrack,  AliESDfriendTrack* friendTrack);
   Int_t FillNextV0( const AliESDV0 *v0);
-  UInt_t CountBits(Byte_t field, UInt_t mask);
+  UInt_t CountBits(Byte_t field, UInt_t mask) const;
 
   // --------------------------------------------------------------------------------
   // -- Fixed size member objects
index 6dfb2bd..33fbe59 100644 (file)
@@ -20,12 +20,13 @@ Op - Track parameters estimated at the point of maximal radial coordinate reache
 
 #include "AliFlatTPCCluster.h"
 #include "AliFlatExternalTrackParam.h"
+#include "AliVVtrack.h"
 
 class AliESDtrack;
 class AliESDfriendTrack;
 class AliExternalTrackParam;
 
-class AliFlatESDTrack {
+class AliFlatESDTrack: public AliVVtrack {
  public:
   // --------------------------------------------------------------------------------
   // -- Constructor / Destructors
@@ -44,7 +45,7 @@ class AliFlatESDTrack {
                               const AliExternalTrackParam* outerITSParam
                             );
 
-  AliFlatTPCCluster *GetNextTPCClusterPointer(){ return &GetTPCCluster(fNTPCClusters); }
+  AliFlatTPCCluster *GetNextTPCClusterPointer(){ return GetTPCCluster(fNTPCClusters); }
 
   void StoreLastTPCCluster(){  
      ++fNTPCClusters;
@@ -91,8 +92,9 @@ class AliFlatESDTrack {
     return reinterpret_cast< AliFlatTPCCluster*>(fContent + sizeof(AliFlatExternalTrackParam)*CountBits(fTrackParamMask));
   } 
   
-  AliFlatTPCCluster &GetTPCCluster(Int_t ind) {
-    return GetTPCClusters()[ind];
+  AliFlatTPCCluster *GetTPCCluster(Int_t ind) {
+    AliFlatTPCCluster& cluster = GetTPCClusters()[ind];
+    return &cluster;
   } 
 
   Int_t GetNumberOfITSClusters() {
index 7072b24..0846e68 100644 (file)
@@ -10,8 +10,9 @@
  */
 
 #include "Rtypes.h"
+#include "AliVVv0.h"
 
-struct AliFlatESDV0
+struct AliFlatESDV0: public AliVVv0
 {
   Int_t fNegTrackID;
   Int_t fPosTrackID;
diff --git a/HLT/global/AliFlatESDVertex.cxx b/HLT/global/AliFlatESDVertex.cxx
new file mode 100644 (file)
index 0000000..a24b52f
--- /dev/null
@@ -0,0 +1,14 @@
+#include "AliFlatESDVertex.h"
+
+void AliFlatESDVertex::Set(const AliESDVertex &v )
+{
+  fPosition[0] = v.GetX();
+  fPosition[1] = v.GetY();
+  fPosition[2] = v.GetZ();
+  Double_t c[6]; 
+  v.GetCovarianceMatrix( c ); 
+  for( int i=0; i<6; i++) fCov[i] = c[i];
+  fNContributors = v.GetNContributors();
+  fChi2 = v.GetChi2();
+}
+
index f8e8c0d..8cb7726 100644 (file)
  */
 
 #include "Rtypes.h"
+#include "AliVVvertex.h"
 #include "AliESDVertex.h"
 
-struct AliFlatESDVertex
+class AliFlatESDVertex: public AliVVvertex
 {
-
+  public:
   Double32_t fPosition[3];    // vertex position
   Double32_t fCov[6];  // vertex covariance matrix
   Int_t    fNContributors;  // # of tracklets/tracks used for the estimate   
@@ -93,18 +94,4 @@ struct AliFlatESDVertex
  
 };
 
-void AliFlatESDVertex::Set(const AliESDVertex &v )
-{
-  fPosition[0] = v.GetX();
-  fPosition[1] = v.GetY();
-  fPosition[2] = v.GetZ();
-  Double_t c[6]; 
-  v.GetCovarianceMatrix( c ); 
-  for( int i=0; i<6; i++) fCov[i] = c[i];
-  fNContributors = v.GetNContributors();
-  fChi2 = v.GetChi2();
-}
-
-typedef struct AliFlatESDVertex AliFlatESDVertex;
-
 #endif
diff --git a/HLT/global/AliVVVZEROfriend.h b/HLT/global/AliVVVZEROfriend.h
new file mode 100644 (file)
index 0000000..fbc0cb3
--- /dev/null
@@ -0,0 +1,109 @@
+#ifndef ALIVVVZEROFRIEND_H
+#define ALIVVVZEROFRIEND_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+///////////////////////////////////////////////////////////////////////////////
+///
+/// This is a class with access methods for VZERO DDL raw data
+/// It is written to the ESD-friend file
+///
+///////////////////////////////////////////////////////////////////////////////
+
+#include <TObject.h>
+
+class AliVVVZEROfriend {
+  public :
+    AliVVVZEROfriend();
+    virtual ~AliVVVZEROfriend();
+
+    AliVVVZEROfriend(const AliVVVZEROfriend& vzerofriend);
+    AliVVVZEROfriend& operator = (const AliVVVZEROfriend& vzerofriend);
+
+    virtual void Reset();
+
+// Getters of various scalers and Minimum Bias flags :
+
+   virtual ULong64_t          GetBBScalers(Int_t channel) const  
+      { return        fBBScalers[channel]; }
+   virtual ULong64_t          GetBGScalers(Int_t channel) const  
+      { return        fBGScalers[channel]; }
+   virtual UInt_t             GetTriggerScalers(Int_t num_scaler) const 
+      { return        fScalers[num_scaler]; }
+   virtual UInt_t             GetBunchNumbersMB(Int_t num_bunch) const 
+      { return        fBunchNumbers[num_bunch]; }
+   virtual UShort_t           GetChargeMB(Int_t channel, Int_t num_bunch) const  
+      { return        fChargeMB[channel][num_bunch]; } 
+   virtual Bool_t             GetIntMBFlag(Int_t channel, Int_t num_bunch) const   
+      { return        fIsIntMB[channel][num_bunch]; } 
+   virtual Bool_t             GetBBMBFlag(Int_t channel, Int_t num_bunch) const   
+      { return        fIsBBMB[channel][num_bunch]; }  
+   virtual Bool_t             GetBGMBFlag(Int_t channel, Int_t num_bunch) const   
+      { return        fIsBGMB[channel][num_bunch]; }      
+       
+// Getters of ADC signals, ADC pedestals, time information and corresponding flags :
+
+    virtual Float_t           GetADC(Int_t channel) const
+      { return fADC[channel][kNEvOfInt/2]; }
+    virtual Float_t           GetPedestal(Int_t channel, Int_t event) const
+      { return fADC[channel][event]; }
+    virtual Bool_t            GetIntegratorFlag(Int_t channel, Int_t event) const
+      { return fIsInt[channel][event]; }
+    virtual Bool_t            GetBBFlag(Int_t channel, Int_t event) const
+      { return fIsBB[channel][event]; } 
+    virtual Bool_t            GetBGFlag(Int_t channel, Int_t event) const
+      { return fIsBG[channel][event]; }   
+    virtual Float_t            GetTime(Int_t channel) const
+      { return fTime[channel]; }
+    virtual Float_t            GetWidth(Int_t channel) const
+      { return fWidth[channel]; }
+
+    // Setters
+    virtual void              SetBBScalers(Int_t channel, ULong64_t scalers)
+      { fBBScalers[channel] = scalers; }
+    virtual void              SetBGScalers(Int_t channel, ULong64_t scalers)
+      { fBGScalers[channel] = scalers; }
+    virtual void              SetTriggerScalers(Int_t num_scaler, UInt_t scaler)
+      { fScalers[num_scaler] = scaler; }
+    virtual void              SetBunchNumbersMB(Int_t num_bunch, UInt_t bunch)
+      { fBunchNumbers[num_bunch] = bunch; }
+    virtual void              SetChargeMB(Int_t channel,Int_t num_bunch, UShort_t charge)
+      { fChargeMB[channel][num_bunch] = charge; }
+    virtual void              SetIntMBFlag(Int_t channel,Int_t num_bunch, Bool_t flag)
+      { fIsIntMB[channel][num_bunch] = flag; }
+    virtual void              SetBBMBFlag(Int_t channel,Int_t num_bunch, Bool_t flag)
+      { fIsBBMB[channel][num_bunch] = flag; }
+    virtual void              SetBGMBFlag(Int_t channel,Int_t num_bunch, Bool_t flag)
+      { fIsBGMB[channel][num_bunch] = flag; }
+
+    virtual void              SetPedestal(Int_t channel, Int_t event, Float_t adc)
+      { fADC[channel][event] = adc; }
+    virtual void              SetIntegratorFlag(Int_t channel, Int_t event, Bool_t flag)
+      { fIsInt[channel][event] = flag; }
+    virtual void              SetBBFlag(Int_t channel, Int_t event, Bool_t flag)
+      { fIsBB[channel][event] = flag; }
+    virtual void              SetBGFlag(Int_t channel, Int_t event, Bool_t flag)
+      { fIsBG[channel][event] = flag; }
+    virtual void              SetTime(Int_t channel, Float_t time)
+      { fTime[channel] = time; }
+    virtual void              SetWidth(Int_t channel, Float_t width)
+      { fWidth[channel] = width; }
+
+    virtual UShort_t          GetTriggerInputs() const
+      { return fTrigger; }
+    virtual UShort_t          GetTriggerInputsMask() const
+      { return fTriggerMask; }
+    virtual void              SetTriggerInputs(UShort_t inputs)
+      { fTrigger = inputs; }
+    virtual void              SetTriggerInputsMask(UShort_t mask)
+      { fTriggerMask = mask; }
+
+    enum EESDVZEROfriendParams {
+      kNChannels = 64, // number of electronic channels in V0 (FEE numbering)
+      kNEvOfInt  = 21, // number of events of interest
+      kNScalers  = 16, // number of scalers
+      kNBunches  = 10  // number of bunches used in Minimum Bias information 
+    };
+};
+
+#endif
index 1e30462..997ec3c 100644 (file)
@@ -622,7 +622,7 @@ void AliAnalysisTaskEMCALClusterizeFast::TrackClusterMatching(AliVCluster *c, TC
     AliVTrack *track = static_cast<AliVTrack*>(tarr->At(t));
     if (!track)
       continue;
-    const AliExternalTrackParam *outp = track->GetOuterParam();
+    const AliExternalTrackParam *outp = dynamic_cast<const AliExternalTrackParam*>(track->GetOuterParam());
     if (!outp)
       continue;
     Double_t trkPos[3] = {0.,0.,0.};
index eddf240..b00740a 100644 (file)
@@ -43,6 +43,7 @@ class AliAODVertex;
 class AliVertexerTracks;
 class AliESDv0; 
 class AliAODv0; 
+class AliExternalTrackParam;
 
 //-----------------------------------------------------------------------------
 class AliAnalysisVertexingHF : public TNamed {
index 2a9672c..d55a65b 100644 (file)
@@ -63,7 +63,7 @@ class AliEmcalJet : public AliVParticle
   Short_t           ClusterAt(Int_t idx)         const { return fClusterIDs.At(idx);       }
   AliVCluster      *ClusterAt(Int_t idx, TClonesArray *ca)  const { if (!ca) return 0; return dynamic_cast<AliVCluster*>(ca->At(ClusterAt(idx))); }
   AliVCluster      *GetLeadingCluster(TClonesArray *clusters) const;
-  UShort_t          GetNumberOfClusters()        const { return fClusterIDs.GetSize();     }
+  Int_t          GetNumberOfClusters()        const { return fClusterIDs.GetSize();     }
   UShort_t          GetNumberOfTracks()          const { return fTrackIDs.GetSize();       }
   UShort_t          GetNumberOfConstituents()    const { return GetNumberOfClusters()+GetNumberOfTracks();       }
   Double_t          FracEmcalArea()              const { return fAreaEmc/fArea;            }
index 86311d9..f59c0bd 100644 (file)
@@ -895,7 +895,7 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
          AliTOFPIDResponse &tofResponse = fPIDResponse->GetTOFResponse();
 
          Float_t p = trk->P();
-         if (const AliExternalTrackParam *param = trk->GetInnerParam())
+         if (const AliVVtrack *param = trk->GetInnerParam())
            p = param->GetP();
 
          Double_t expTOF = fPIDResponse->GetTOFResponse().GetExpectedSignal(trk, AliPID::kProton);
index bf9a138..0ce0939 100644 (file)
@@ -86,9 +86,9 @@ class AliAODMCParticle: public AliVParticle {
       fFlag &= 0xffff;   // reset the upper bins keep the lower bins
       fFlag |= (((UInt_t)status)<<16); // bit shift by 16
     }
-    UInt_t GetStatus() const {
+    ULong_t GetStatus() const {
       // bit shift by 16
-      return fFlag>>16;
+      return ULong_t(fFlag>>16);
     }
 
     // Bitwise operations
index 686b262..2627002 100644 (file)
@@ -17,6 +17,7 @@
 #include "AliAODVertex.h"
 #include "AliAODRedCov.h"
 #include "AliAODPid.h"
+#include "AliExternalTrackParam.h"
  
 
 class AliVVertex;
@@ -276,6 +277,9 @@ class AliAODTrack : public AliVTrack {
   void    SetTPCFitMap(const TBits amap) {fTPCFitMap = amap;}
   void    SetTPCPointsF(UShort_t  findable){fTPCnclsF = findable;}
   void    SetTPCNCrossedRows(UInt_t n)     {fTPCNCrossedRows = n;}
+  
+  virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }
+  virtual const    AliExternalTrackParam * GetOuterParam() const { return NULL; }
 
   UShort_t GetTPCNclsF() const { return fTPCnclsF;}
   UShort_t GetTPCNCrossedRows()  const { return fTPCNCrossedRows;}
index f1980f8..4dc5f75 100644 (file)
@@ -1,6 +1,11 @@
 # -*- mode: CMake -*-
 
 set ( SRCS  
+    STEERBase/AliVVevent.cxx
+    STEERBase/AliVVtrack.cxx
+    STEERBase/AliVVvertex.cxx
+    STEERBase/AliVVv0.cxx
+    STEERBase/AliVVkink.cxx
     STEERBase/AliVParticle.cxx 
     STEERBase/AliVTrack.cxx 
     STEERBase/AliEventplane.cxx 
index 216acf8..28ce074 100644 (file)
@@ -46,6 +46,8 @@
 #include "AliESDTOFCluster.h"
 #include "AliESDTOFHit.h"
 #include "AliESDTOFMatch.h"
+#include "AliESDv0.h"
+#include "AliESDkink.h"
 
 
 
@@ -54,8 +56,6 @@ class AliESDHLTtrack;
 class AliESDVertex;
 class AliESDPmdTrack;
 class AliESDFMD;
-class AliESDkink;
-class AliESDv0;
 class AliMultiplicity;
 class AliRawDataErrorLog;
 class AliESDRun;
@@ -280,8 +280,7 @@ public:
 
   void SetESDfriend(const AliESDfriend *f) const;
   void GetESDfriend(AliESDfriend *f) const;
-
-
+  //AliESDfriend* FindFriend() const { return static_cast<AliESDfriend*>(FindListObject("AliESDfriend")); }
 
   void SetPrimaryVertexTPC(const AliESDVertex *vertex); 
   const AliESDVertex *GetPrimaryVertexTPC() const {return fTPCVertex;}
index 300210a..cb1849c 100644 (file)
 #include <TObject.h>
 #include "AliExternalTrackParam.h"
 #include <TPDGCode.h>
+#include "AliVVkink.h"
 
 class AliESDtrack;
 
-class AliESDkink : public TObject {
+class AliESDkink : public TObject, public AliVVkink {
 public:
   AliESDkink();             //constructor
   AliESDkink(const AliESDkink &source);             //constructor
index 615606c..a3e9aea 100644 (file)
@@ -113,7 +113,7 @@ public:
   void SetParamP(const AliExternalTrackParam & paramP) {fParamP = paramP;}
   void SetParamN(const AliExternalTrackParam & paramN) {fParamN = paramN;}
   void SetStatus(Int_t status){fStatus=status;}
-  Int_t GetStatus() const {return fStatus;}
+  ULong_t GetStatus() const {return ULong_t(fStatus);}
   Int_t GetIndex(Int_t i) const {return (i==0) ? fNidx : fPidx;}
   void SetIndex(Int_t i, Int_t ind);
   const Double_t *GetAnglep() const {return fAngle;}
index 16f334a..6aa333d 100644 (file)
@@ -1370,8 +1370,8 @@ AliTPCPIDResponse::EChamberStatus AliTPCPIDResponse::TrackStatus(const AliVTrack
  
   //if there is no inner param this could mean we're using the AOD track,
   //we still can extrapolate from the vertex - so use those params.
-  const AliExternalTrackParam* ip = track->GetInnerParam();
-  if (ip) track=ip;
+  const AliVVtrack* ip = track->GetInnerParam();
+  if (ip) track=dynamic_cast<const AliVTrack*>(ip);
 
   Bool_t trackAtInner = track->GetXYZAt(innerRadius, fMagField, trackPositionInner);
   Bool_t trackAtOuter = track->GetXYZAt(outerRadius, fMagField, trackPositionOuter);
index df01a8b..fa94ae8 100644 (file)
 #include "TRefArray.h"
 #include "AliTOFHeader.h"
 #include "AliVTrdTrack.h"
+#include "AliVVevent.h"
 class AliCentrality;
 class AliEventplane;
 class AliVVZERO;
 class AliVZDC;
 class AliVMFT;   // AU
 
-class AliVEvent : public TObject {
+class AliVEvent : public TObject, public AliVVevent {
 
 public:
   enum EOfflineTriggerTypes { 
index d2db029..7233ea4 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <Rtypes.h>
 #include <TObject.h>
+#include "AliVVtrack.h"
 
 #include <float.h>
 
@@ -21,7 +22,7 @@ const Double_t kAlmost0=Double_t(FLT_MIN);
 const Double_t kB2C=-0.299792458e-3;
 const Double_t kAlmost0Field=1.e-13;
 
-class AliVParticle: public TObject {
+class AliVParticle: public TObject, public AliVVtrack {
 
 public:
   AliVParticle() { }
index b928d06..a1ac10a 100644 (file)
 
 class AliVEvent;
 class AliVVertex;
-class AliExternalTrackParam;
 class AliTPCdEdxInfo;
 class AliDetectorPID;
 class AliTOFHeader;
+class AliVVtrack;
 
  
 class AliVTrack: public AliVParticle {
@@ -89,6 +89,7 @@ public:
   virtual void     SetDetectorPID(const AliDetectorPID */*pid*/) {;}
   virtual const    AliDetectorPID* GetDetectorPID() const { return 0x0; }
   virtual Double_t GetTRDchi2()          const { return -1;}
+  virtual Int_t    GetNumberOfClusters() const {return 0;}
   
   virtual Int_t GetEMCALcluster()     const {return kEMCALNoMatch;}
   virtual void SetEMCALcluster(Int_t)       {;}
@@ -143,8 +144,8 @@ public:
   virtual void     GetBxByBz(Double_t b[3]) const;
   virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const = 0;
   virtual Bool_t   PropagateToDCA(const AliVVertex *vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]) = 0;
-  virtual const    AliExternalTrackParam * GetOuterParam() const { return NULL; }
-  virtual const    AliExternalTrackParam * GetInnerParam() const { return NULL; }
+  virtual const    AliVVtrack * GetOuterParam() const { return NULL; }
+  virtual const    AliVVtrack * GetInnerParam() const { return NULL; }
   virtual Int_t    GetNcls(Int_t /*idet*/) const { return 0; }
   virtual Bool_t   GetPxPyPz(Double_t */*p*/) const { return kFALSE; }
   virtual void     SetID(Short_t /*id*/) {;}
index 7101628..36fc26f 100644 (file)
@@ -9,8 +9,9 @@
 //-------------------------------------------------------------------------
 
 #include <TNamed.h>
+#include "AliVVvertex.h"
 
-class AliVVertex: public TNamed {
+class AliVVertex: public TNamed, public AliVVvertex {
 
 public:
   AliVVertex() : TNamed() { }
diff --git a/STEER/STEERBase/AliVVevent.cxx b/STEER/STEERBase/AliVVevent.cxx
new file mode 100644 (file)
index 0000000..85c8690
--- /dev/null
@@ -0,0 +1,35 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/**
+ * >> base interface class for events <<
+ *
+ * To be used in the online and offline calibration schema.
+ *
+ * Class provides interface methods for 
+ *   - Filling from AliESDEvent, but also from HLT (to be added)
+ *   - Getter methods
+ *
+ * In the online case, the structure can be directly written into a shared 
+ * memory, in the offline case, the size has to be estimated first.
+ *
+ * 
+ * Primary Authors : Mikolaj Krzewicki
+ */
+
+#include "AliVVevent.h"
+
diff --git a/STEER/STEERBase/AliVVevent.h b/STEER/STEERBase/AliVVevent.h
new file mode 100644 (file)
index 0000000..21fb3cb
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef ALIVVEVENT_H
+#define ALIVVEVENT_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
+
+/*
+ * See implementation file for documentation
+ */
+#include "Rtypes.h"
+#include "TString.h"
+class AliVVevent;
+class AliVVvertex;
+class AliVVtrack;
+class AliMultiplicity;
+class AliVVkink;
+class AliVVeventFriend;
+
+class AliVVevent {
+ public:
+  // --------------------------------------------------------------------------------
+  // -- Constructor / Destructors
+  AliVVevent() {}
+  virtual ~AliVVevent() {}
+
+  // --------------------------------------------------------------------------------
+  virtual void Reset();
+
+  // --------------------------------------------------------------------------------
+  // Access methods
+
+  virtual const AliVVvertex* GetPrimaryVertex() const {return NULL;}
+  virtual const AliVVvertex* GetPrimaryVertexSPD() const {return NULL;}
+  virtual const AliVVvertex* GetPrimaryVertexTracks() const {return NULL;}
+  virtual const AliVVvertex* GetPrimaryVertexTPC() const {return NULL;}
+  virtual AliVVtrack* GetTrack(Int_t /*i*/) const {return NULL;}
+  virtual AliVVkink* GetKink(Int_t /*i*/) const {return NULL;}
+  virtual AliVVtrack* GetV0(Int_t /*i*/) const {return 0;}
+  virtual Int_t GetNumberOfTracks() const {return 0;}
+  virtual Int_t GetNumberOfV0s() const {return 0;}
+  virtual Int_t GetNumberOfKinks() const {return 0;}
+  virtual Int_t GetEventNumberInFile() const {return -1;}
+  virtual const AliMultiplicity* GetMultiplicity() const {return NULL;} //by default SPDmult
+  virtual Int_t GetRunNumber() const {return -1;}
+  virtual TString GetFiredTriggerClasses() const {TString string; return string;}
+  virtual TObject* FindListObject(const char* /*name*/) const {return NULL;}
+  virtual ULong64_t GetTriggerMask() const {return 0;}
+  virtual Double_t GetMagneticField() const {return 0;}
+  virtual UInt_t GetTimeStamp() const { return 0;}
+  virtual UInt_t GetEventSpecie() const { return 0;}
+  //virtual AliVVeventFriend* FindFriend() const { return NULL; }
+};
+#endif
diff --git a/STEER/STEERBase/AliVVeventFriend.h b/STEER/STEERBase/AliVVeventFriend.h
new file mode 100644 (file)
index 0000000..fcc2f8c
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef ALIVVEVENTFRIEND_H
+#define ALIVVEVENTFRIEND_H
+
+class AliVVVZEROfriend;
+class AliVVTZEROfriend;
+
+//_____________________________________________________________________________
+class AliVVfriend {
+public:
+  AliVVfriend();
+  virtual ~AliVVfriendEvent();
+
+  virtual Int_t GetNumberOfTracks() const {return 0;}
+  AliVVfriendTrack* GetTrack(Int_t /*i*/) const {return NULL;}
+  virtual Int_t GetEntriesInTracks() const {return 0;}
+  
+  virtual AliESDVZEROfriend *GetVZEROfriend(){ return NULL; }
+  virtual AliESDTZEROfriend *GetTZEROfriend(){ return NULL; }
+
+  virtual void Ls() {}
+
+  virtual void Reset() {}
+  
+  Bool_t TestSkipBit() {return kFALSE;}
+
+  virtual Int_t GetNclustersTPC(UInt_t /*sector*/) const {return 0;}
+  virtual Int_t GetNclustersTPCused(UInt_t /*sector*/) const {return 0;}
+  
+  //virtual void AddTrack(const AliVVfriendTrack *t) {}
+  //virtual void AddTrackAt(const AliVVfriendTrack* /*t*/, Int_t /*i*/) {}
+  //virtual void SetVZEROfriend(AliESDVZEROfriend* /*obj*/) {}
+  //virtual void SetTZEROfriend(AliESDTZEROfriend * obj) {}
+  //void SetSkipBit(Bool_t skip){}
+
+private: 
+  AliVVfriend(const AliVVfriend &);
+  AliVVfriend& operator=(const AliVVfriend& esd);  
+};
+
+#endif
+
+
diff --git a/STEER/STEERBase/AliVVkink.cxx b/STEER/STEERBase/AliVVkink.cxx
new file mode 100644 (file)
index 0000000..025183a
--- /dev/null
@@ -0,0 +1,20 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliVVkink.h"
+
+
diff --git a/STEER/STEERBase/AliVVkink.h b/STEER/STEERBase/AliVVkink.h
new file mode 100644 (file)
index 0000000..e56870e
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef ALIVVkink_H
+#define ALIVVkink_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
+
+/**
+ * >> interface class <<
+ */
+
+class AliVVkink
+{
+
+};
+
+#endif
diff --git a/STEER/STEERBase/AliVVtrack.cxx b/STEER/STEERBase/AliVVtrack.cxx
new file mode 100644 (file)
index 0000000..2b5988f
--- /dev/null
@@ -0,0 +1,27 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/**
+ * >> interface class to a track/particle (normal/flat) <<
+ *
+ * To be used in the online and offline calibration schema.
+ *
+ * Primary Authors : Mikolaj Krzewicki (mkrzewic@cern.ch)
+ *
+ **************************************************************************/
+
+#include "AliVVtrack.h"
diff --git a/STEER/STEERBase/AliVVtrack.h b/STEER/STEERBase/AliVVtrack.h
new file mode 100644 (file)
index 0000000..af7d6b0
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef ALIVVTRACK_H
+#define ALIVVTRACK_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Mikolaj Krzewicki mkrzewic@cern.ch     */
+
+/*
+ * See implementation file for documentation
+ */
+
+#include "AliPID.h"
+
+struct AliFlatTPCCluster;
+struct AliFlatExternalTrackParam;
+
+class AliVVtrack {
+ public:
+  // --------------------------------------------------------------------------------
+  // -- Constructor / Destructors
+  AliVVtrack() {} 
+  virtual ~AliVVtrack() {}
+
+  // --------------------------------------------------------------------------------
+  // -- Getter methods
+  virtual AliFlatExternalTrackParam* GetTrackParamRefitted() { return NULL; } 
+  virtual AliFlatExternalTrackParam* GetTrackParamIp() { return NULL; } 
+  virtual AliFlatExternalTrackParam* GetTrackParamTPCInner() { return NULL; } 
+  virtual AliFlatExternalTrackParam* GetTrackParamOp() { return NULL; } 
+  virtual AliFlatExternalTrackParam* GetTrackParamCp() { return NULL; } 
+  virtual AliFlatExternalTrackParam* GetTrackParamITSOut() { return NULL; } 
+
+  // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
+  virtual Int_t GetNumberOfTPCClusters() { return 0; } 
+  virtual AliFlatTPCCluster* GetTPCClusters() { return NULL; } 
+  virtual AliFlatTPCCluster* GetTPCCluster(Int_t /*ind*/) { return NULL; } 
+  virtual Int_t GetNumberOfITSClusters() { return 0; }
+  virtual AliVVtrack *GetNextTrack() {return NULL; }
+
+  virtual Bool_t GetXYZ(Double_t* /*p*/) const {return kFALSE;}
+  virtual void  GetXYZ(Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
+  virtual Double_t GetTgl()  const {return 0.;}
+  virtual UShort_t GetTPCNclsF() const { return 0;}
+
+  virtual Double_t GetTOFsignalDz() const {return 0.;}
+  virtual void GetImpactParameters(Float_t& /*xy*/,Float_t& /*z*/) const {}
+  //TODO:
+  virtual void GetDZ(Double_t /*x*/,Double_t /*y*/,Double_t /*z*/,Double_t /*b*/, Float_t dz[2]) const {if (dz[0]==0) return;}
+
+  virtual Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159, Int_t bitType=0 ) const {return 0.*nNeighbours*type*row0*row1*bitType;}
+  virtual UShort_t GetTPCncls(Int_t row0=0,Int_t row1=159) const {return 0*row0*row1;}
+  virtual Bool_t IsOn(Int_t /*mask*/) const {return kFALSE;}
+  virtual void GetDirection(Double_t d[3]) const {if (d[0]==0) return;}
+  virtual const Double_t *GetParameter() const {return 0;}
+  virtual void GetImpactParametersTPC(Float_t& /*xy*/,Float_t& /*z*/) const {}
+  virtual Int_t GetNumberOfClusters() const {return 0;} 
+  virtual const AliVVtrack* GetTPCInnerParam() const {return NULL;}
+  virtual Double_t Pt() const {return 0.;}
+  virtual Double_t GetP() const {return 0.;}
+  virtual Double_t GetTPCmomentum() const {return 0.;}
+  virtual ULong_t GetStatus() const {return 0;}
+  virtual const AliVVtrack * GetOuterParam() const { return NULL;}
+  virtual const AliVVtrack * GetInnerParam() const { return NULL;}
+  virtual Int_t GetKinkIndex(Int_t /*i*/) const { return 0;}
+  virtual Double_t Eta() const {return 0.;}
+  virtual Double_t GetY() const {return 0.;}
+  
+  virtual Double_t GetX() const {return 0.;}
+  virtual Double_t GetZ() const {return 0.;}
+  virtual Int_t GetNcls(Int_t /*idet*/) const {return 0;}
+  virtual void GetIntegratedTimes(Double_t* /*times*/, Int_t nspec=AliPID::kSPECIES) const {if (nspec<0) return;}
+  virtual Double_t GetSigned1Pt()  const {return 0.;}  
+  virtual Double_t GetLinearD(Double_t /*xv*/, Double_t /*yv*/) const {return 0.;}
+  virtual const AliVVtrack *GetConstrainedParam() const {return NULL;}
+  virtual Double_t GetAlpha() const {return 0.;}
+  virtual Char_t GetITSclusters(Int_t* /*idx*/) const {return 0;}
+  virtual Double_t GetSign() const {return 0.;}
+  virtual UShort_t GetTPCNcls() const { return 0;}
+  virtual Float_t GetTPCCrossedRows() const {return 0.;}
+  virtual Double_t GetTPCsignal() const {return 0.;}
+  virtual Double_t GetTOFsignal() const {return 0.;}
+  virtual UChar_t GetTRDclusters(Int_t* /*idx*/) const {return 0;}
+  
+  //AliTPCtrack
+  virtual void GetNFoundable(Int_t /*n*/) {} 
+  virtual Double_t GetdEdx()  const {return 0.;}
+};
+#endif
diff --git a/STEER/STEERBase/AliVVv0.cxx b/STEER/STEERBase/AliVVv0.cxx
new file mode 100644 (file)
index 0000000..d9440b8
--- /dev/null
@@ -0,0 +1,20 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliVVv0.h"
+
+
diff --git a/STEER/STEERBase/AliVVv0.h b/STEER/STEERBase/AliVVv0.h
new file mode 100644 (file)
index 0000000..60b8550
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef ALIVVV0_H
+#define ALIVVV0_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
+
+/**
+ * >> Flat structure representing a ESD vertex <<
+ */
+
+#include "AliVVtrack.h"
+
+class AliVVv0: public AliVVtrack
+{
+
+};
+
+#endif
diff --git a/STEER/STEERBase/AliVVvertex.cxx b/STEER/STEERBase/AliVVvertex.cxx
new file mode 100644 (file)
index 0000000..0ae7a62
--- /dev/null
@@ -0,0 +1,20 @@
+/* $Id$ */
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "AliVVvertex.h"
+
+
diff --git a/STEER/STEERBase/AliVVvertex.h b/STEER/STEERBase/AliVVvertex.h
new file mode 100644 (file)
index 0000000..140ca46
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef ALIVVVERTEX_H
+#define ALIVVVERTEX_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               *
+ * Primary Author: Mikolaj Krzewicki
+
+ * >> interface for vertices <<
+ */
+
+#include "Rtypes.h"
+
+class AliVVvertex
+{
+  public:
+  virtual Double_t GetX() const { return 0; }
+  virtual Double_t GetY() const { return 0; }
+  virtual Double_t GetZ() const { return 0; }
+  virtual void GetXYZ(Double_t pos[3]) const {if (pos[0]<0) return;}
+  virtual void     GetCovarianceMatrix(Double_t covmatrix[6]) const = 0;
+  virtual Double_t GetChi2perNDF() const = 0;
+  virtual Double_t GetChi2() const = 0;
+  virtual Int_t    GetNDF() const = 0;
+  virtual void     PrintIndices() const = 0;
+  virtual void     Print(Option_t* option = "") const = 0;
+  virtual Int_t    GetBC() const;
+  virtual void Clear(Option_t* /*option*/) {}
+  virtual Int_t    GetNContributors() const { return 0; }
+};
+
+#endif
index 28b74cd..c961165 100644 (file)
@@ -89,6 +89,7 @@ void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
     return;
   }
   fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend"));
+  //fESDfriend=fESD->FindFriend();
   Int_t n=fESD->GetNumberOfTracks();
   Process(fESD);
   if (!fESDfriend) {