]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
split of VVtrack and Vtrack interfaces, update of AliFlat classes (only partially...
authorsgorbuno <Sergey.Gorbunov@cern.ch>
Mon, 4 Aug 2014 00:41:59 +0000 (02:41 +0200)
committersgorbuno <Sergey.Gorbunov@cern.ch>
Mon, 4 Aug 2014 00:41:59 +0000 (02:41 +0200)
38 files changed:
HLT/CMakelibAliHLTGlobal.pkg
HLT/global/AliFlatESDEvent.cxx
HLT/global/AliFlatESDEvent.h
HLT/global/AliFlatESDFriendTrack.h
HLT/global/AliFlatESDTrack.cxx
HLT/global/AliFlatESDTrack.h
HLT/global/AliFlatESDV0.cxx
HLT/global/AliFlatESDV0.h
HLT/global/AliFlatESDVertex.cxx
HLT/global/AliFlatESDVertex.h
HLT/global/AliFlatExternalTrackParam.h
HLT/global/AliFlatTPCCluster.h
HLT/global/AliHLTGlobalFlatEsdConverterComponent.cxx
HLT/global/AliHLTGlobalFlatEsdConverterComponent.h
PWG/DevNanoAOD/AliNanoAODTrack.h
PWG/EMCAL/AliPicoTrack.h
PWG/FLOW/Tasks/AliFlowTrackCuts.h
PWGJE/UserTasks/AliAnalysisTaskJetProtonCorr.cxx
STEER/AOD/AliAODRecoDecay.h
STEER/AOD/AliAODTrack.h
STEER/ESD/AliESDEvent.cxx
STEER/ESD/AliESDEvent.h
STEER/ESD/AliESDfriendTrack.cxx
STEER/ESD/AliESDfriendTrack.h
STEER/ESD/AliESDtrack.cxx
STEER/ESD/AliESDtrack.h
STEER/ESD/AliESDv0.h
STEER/STEERBase/AliExternalTrackParam.h
STEER/STEERBase/AliTPCPIDResponse.cxx
STEER/STEERBase/AliVParticle.h
STEER/STEERBase/AliVTrack.h
STEER/STEERBase/AliVVTPCseed.h
STEER/STEERBase/AliVVevent.h
STEER/STEERBase/AliVVfriendTrack.h
STEER/STEERBase/AliVVtrack.cxx
STEER/STEERBase/AliVVtrack.h
TPC/Calib/AliAnalysisTaskPt.cxx
TPC/Rec/AliTPCseed.h

index 7fe4232f34cb21321d393bc1dbc3befc4604e7f6..131f99d5da2f465a38220f6e1a78897152c32aa7 100644 (file)
@@ -48,6 +48,7 @@ set ( CLASS_HDRS
     AliHLTV0FinderComponent.h
     AliFlatESDEvent.h
     AliFlatESDVertex.h
+    AliFlatESDTrigger.h
     AliFlatESDTrack.h
     AliFlatESDV0.h
     AliFlatESDFriend.h
index 92708988685fd6305f64233eba79cdd7c62bbcfa..d255f48e1ce62ebb35e6491ca62a25fb89d0b201 100644 (file)
 #include "AliFlatTPCCluster.h"
 #include "AliFlatExternalTrackParam.h"
 #include "Riostream.h"
+
 #include "AliFlatESDVertex.h"
 
+#include "AliFlatESDV0.h"
+#include "AliFlatESDTrigger.h"
+
+#include "AliESDEvent.h"
+#include "AliESDVertex.h"
+
 // _______________________________________________________________________________________________________
 AliFlatESDEvent::AliFlatESDEvent() :
-  // Default constructor
+  fContentSize(0),
+  fMagneticField(0),
+  fPeriodNumber(0),
+  fRunNumber(0),
+  fOrbitNumber(0),
+  fTimeStamp(0),
+  fBunchCrossNumber(0),
   fPrimaryVertexMask(0),
+  fTriggerMask(0),
+  fNTriggerClasses(0),
+  fNPrimaryVertices(0),
   fNTracks(0),
-  fTracksPointer(0),
   fNV0s(0),
-  fV0Pointer(0),
-  fSize(0),
-  fContent() 
+  fTriggerPointer(0),
+  fPrimaryVertexPointer(0),
+  fTracksPointer(0),
+  fV0Pointer(0)
 {
+  // Default constructor
+  fContent[0]=0;
 }
 
-// _______________________________________________________________________________________________________
-void AliFlatESDEvent::Reinitialize()
-{
-//
-// Initializing function
-//
-// to be called after event is received via reinterpret_cast from memory
-  
-  
-       new (this) AliFlatESDEvent(AliFlatESDReinitialize);
-               AliFlatESDVertex* vertexSPD = const_cast<AliFlatESDVertex*>(GetPrimaryVertexSPD());
-               if (vertexSPD ) {vertexSPD->Reinitialize(); }
-               AliFlatESDVertex* vertexTracks = const_cast<AliFlatESDVertex*>(GetPrimaryVertexTracks());
-               if (vertexTracks ) { vertexTracks->Reinitialize(); }
-               AliFlatESDTrack* track = GetTracks();
-               
-               for (Int_t i=0; i<GetNumberOfTracks(); i++)
-               {
-                       track->Reinitialize();
-                       track= track->GetNextTrack();
-               }
-       AliFlatESDV0* v0 = GetV0stmp();
-       for (Int_t i=0; i<GetNumberOfV0s(); i++)
-       {
-                       v0->Reinitialize();
-                       v0++;
-               }
-       }
-
 /*
-AliFlatESDEvent::AliFlatESDEvent(const AliFlatESDEvent& ev) :
-  // Default constructor
-  fPrimaryVertexMask(ev.fPrimaryVertexMask),
-  fNTracks(ev.fNTracks),
-  fTracksPointer(ev.fTracksPointer),
-  fNV0s(ev.fNV0s),
-  fV0Pointer(ev.fV0Pointer),
-  fSize(ev.fSize),
-  fContent() 
-{
-}
-*/
 // _______________________________________________________________________________________________________
 AliFlatESDEvent::AliFlatESDEvent(AliESDEvent *esd) :
-  // Constructor
+  fSize(0),
+  fMagneticField(0),
+  fPeriodNumber(0),
+  fRunNumber(0),
+  fOrbitNumber(0),
+  fTimeStamp(0),
+  fBunchCrossNumber(0),
   fPrimaryVertexMask(0),
+  fTriggerMask(0),
+  fNTriggerClasses(0),
+  fNPrimaryVertices(0),
   fNTracks(0),
-  fTracksPointer(0),
   fNV0s(0),
-  fV0Pointer(0),
-  fSize(0),
-  fContent() 
+  fTriggerPointer(0),
+  fPrimaryVertexPointer(0),
+  fTracksPointer(0),
+  fV0Pointer(0)
 { 
+  fContent[0]=0;
   Fill(esd);
 }
 
@@ -137,10 +124,17 @@ AliFlatESDEvent::AliFlatESDEvent(AliESDEvent *esd, Bool_t useESDFriends) :
   fNV0s(0),
   fV0Pointer(0),
   fSize(0),
+  fMagneticField(0),
+  fPeriodNumber(0),
+  fRunNumber(0),
+  fOrbitNumber(0),
+  fBunchCrossNumber(0),
+  fTimeStamp(0),
   fContent() 
 { 
   Fill(esd, useESDFriends);
 }
+*/
 
 // _______________________________________________________________________________________________________
 AliFlatESDEvent::~AliFlatESDEvent() 
@@ -148,6 +142,29 @@ AliFlatESDEvent::~AliFlatESDEvent()
   // Destructor
 }
 
+void AliFlatESDEvent::Init()
+{
+  // Init
+
+  fContentSize = 0;
+  fMagneticField = 0;
+  fPeriodNumber = 0;
+  fRunNumber = 0;
+  fOrbitNumber = 0;
+  fTimeStamp = 0;
+  fBunchCrossNumber = 0;
+  fPrimaryVertexMask = 0;
+  fTriggerMask = 0;
+  fNTriggerClasses = 0;
+  fNPrimaryVertices = 0;
+  fNTracks = 0;
+  fNV0s = 0;
+  fTriggerPointer = 0;
+  fPrimaryVertexPointer = 0;
+  fTracksPointer = 0;
+  fV0Pointer = 0;
+}
+
 // _______________________________________________________________________________________________________
   ULong64_t AliFlatESDEvent::EstimateSize(AliESDEvent *esd, Bool_t useESDFriends, Bool_t fillV0s) 
 {
@@ -167,7 +184,7 @@ void AliFlatESDEvent::FillPrimaryVertices( const AliESDVertex *vertexSPD,
   // fill primary vertices
   
   fPrimaryVertexMask = 0;
-  fSize = 0;
+  fContentSize = 0;
 
   Byte_t flag = 0x1;
   FillPrimaryVertex(vertexSPD, flag);
@@ -175,8 +192,8 @@ void AliFlatESDEvent::FillPrimaryVertices( const AliESDVertex *vertexSPD,
   flag = 0x2;
   FillPrimaryVertex(vertexTracks, flag);
 
-  fTracksPointer = fSize;
-  fV0Pointer = fSize;
+  fTracksPointer = fContentSize;
+  fV0Pointer = fContentSize;
 }
 
 void AliFlatESDEvent::FillPrimaryVertex(const AliESDVertex *v, Byte_t flag) 
@@ -186,11 +203,10 @@ void AliFlatESDEvent::FillPrimaryVertex(const AliESDVertex *v, Byte_t flag)
 
   if (!v) return;
 
-  AliFlatESDVertex *vtx = reinterpret_cast<AliFlatESDVertex*> (fContent + fSize);
-  new(vtx) AliFlatESDVertex;
+  AliFlatESDVertex *vtx = reinterpret_cast<AliFlatESDVertex*> (fContent + fContentSize);
   vtx->Set( *v );    
   fPrimaryVertexMask |= flag;
-  fSize += sizeof(AliFlatESDVertex);
+  fContentSize += sizeof(AliFlatESDVertex);
 }
 
 
@@ -198,35 +214,101 @@ Int_t AliFlatESDEvent::FillNextTrack( const AliESDtrack* esdTrack, AliESDfriendT
 {
   // fill next track
 
-  AliFlatESDTrack * flatTrack = reinterpret_cast<AliFlatESDTrack*>(fContent+fSize);
-  new(flatTrack) AliFlatESDTrack;
+  AliFlatESDTrack *flatTrack = reinterpret_cast<AliFlatESDTrack*>(fContent+fContentSize);
+  //new (flatTrack) AliFlatESDTrack;
   flatTrack->Fill(esdTrack, friendTrack);
-  fSize += flatTrack->GetSize();
+  fContentSize += flatTrack->GetSize();
   ++fNTracks;
   return 0;
 }
 
-void AliFlatESDEvent::Reset()
+Int_t AliFlatESDEvent::AddTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize )
 {
-  fSize = 0;
-  fNTracks=0;
-  fNV0s = 0;  
-  fPrimaryVertexMask = 0;
-  fTracksPointer = 0;  
-  fV0Pointer = 0; 
+  // add trigger class 
+  AliFlatESDTrigger *flatTrigger = reinterpret_cast<AliFlatESDTrigger*>(fContent+fContentSize);
+  Int_t err = flatTrigger->SetTriggerClass( TriggerClassName, TriggerIndex, MaxSize );
+  if( err==0 ){
+    fContentSize+= flatTrigger->GetSize();
+    fNTriggerClasses++;
+  }
+  return err;
 }
 
 // _______________________________________________________________________________________________________
-Int_t AliFlatESDEvent::Fill(const AliESDEvent *esd, const Bool_t useESDFriends, const Bool_t fillV0s )
+Int_t AliFlatESDEvent::FillFromESD( const size_t allocatedMemorySize, const AliESDEvent *esd, const Bool_t useESDFriends, const Bool_t fillV0s)
 {
   // Fill flat ESD event from normal ALiESDEvent
   // - Fill tracks + friends (if requested)
   // -> Added objects have to be added here as well
+#ifdef xxx
+  if( allocatedMemorySize < sizeof(AliFlatESDEvent) ) return -1;
 
-  Reset();
+  Init();
   
-  FillPrimaryVertices( esd->GetPrimaryVertexSPD(), esd->GetPrimaryVertexTracks() );
+  if( !esd ) return 0;
+  
+  Int_t err = 0;
+  size_t freeSpace = allocatedMemorySize - GetSize();
+
+  // fill run info
+  {
+    SetTriggerMask( esd->GetTriggerMask() );
+  }
+
 
+  // Fill trigger information  
+  {
+    size_t triggerSize = 0;
+    int nTriggers = 0;
+    AliFlatESDTrigger *trigger = FillTriggersStart();
+    const AliESDRun*  esdRun = esd->GetESDRun();
+    if( esdRun ){ 
+      for( int index=0; index<AliESDRun::kNTriggerClasses; index++){
+        const char* name = esdRun->GetTriggerClass(index);
+       if( name && name[0]!='\0' ){
+          err = trigger->SetTriggerClass( name, index, freeSpace );
+         if( err!=0 ) return err;
+         nTriggers++;
+         freeSpace -= trigger->GetSize();
+         triggerSize += trigger->GetSize();
+         trigger = trigger->GetNextTrigger();
+        }
+      }
+    }
+    FillTriggersEnd( nTriggers, triggerSize );    
+  }
+
+  // fill primary vertices
+
+  
+  err = FillPrimaryVertices( freeSpace, esd->GetPrimaryVertexSPD(), esd->GetPrimaryVertexTracks() );
+  
+  if( err!=0 ) return err;
+  
+  freeSpace = allocatedMemorySize - GetSize();
+
+ ULong64_t GetTriggerMask() const {return fHeader?fHeader->GetTriggerMask():0;}
+  TString   GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
+  Bool_t    IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
+
+  const AliHLTCTPData* pCTPData=CTPData();
+  if (pCTPData) {
+    AliHLTUInt64_t mask=pCTPData->ActiveTriggers(trigData);
+    for (int index=0; index<gkNCTPTriggerClasses; index++) {
+      if ((mask&((AliHLTUInt64_t)0x1<<index)) == 0) continue;
+      pESD->SetTriggerClass(pCTPData->Name(index), index);
+    }
+    pESD->SetTriggerMask(mask);
+  }
+
+  
+  //allocatedMemorySize - GetSize();
+
+  FillTriggersEnd(nTriggers, triggerSize );
   // -- Get ESD friends
   // -------------------------------------------------------
   Bool_t connectESDFriends = useESDFriends;
@@ -258,7 +340,7 @@ Int_t AliFlatESDEvent::Fill(const AliESDEvent *esd, const Bool_t useESDFriends,
 
   // Fill V0s
   
-  fV0Pointer = fSize;
+  fV0Pointer = fContentSize;
   fNV0s = 0;
   if( fillV0s ){
     for( int i=0; i < esd->GetNumberOfV0s(); i++){
@@ -270,7 +352,7 @@ Int_t AliFlatESDEvent::Fill(const AliESDEvent *esd, const Bool_t useESDFriends,
       StoreLastV0();      
     }
   }
-
+#endif
   return 0;
 }
 
index 719660b624c7d56a93bd7c04859d5d11bb7de65b..9e2a9aa07b80b695654a1c2eaa77bb342b8bd28f 100644 (file)
  */
 
 #include "Rtypes.h"
-#include "AliFlatESDTrack.h"
-#include "AliFlatESDV0.h"
 #include "AliVVevent.h"
 #include "AliFlatESDVertex.h"
-#include "AliFlatESDMisc.h"
+
+class AliFlatESDTrack;
+class AliFlatESDV0;
+class AliFlatESDTrigger;
 
 class AliESDEvent;
 class AliESDVertex;
-class AliESDV0;
-class TString;
+class AliESDtrack;
+class AliESDfriendTrack;
+class AliESDv0;
 
-class AliFlatESDEvent: public AliVVevent {
-//class AliFlatESDEvent {
+class AliFlatESDEvent :public AliVVevent {
  public:
   // --------------------------------------------------------------------------------
   // -- Constructor / Destructors
-  AliFlatESDEvent();   
+  AliFlatESDEvent();
+  ~AliFlatESDEvent();
+
+  // Interface to AliVVEvent
+
+  void Reset(){}
+
+  Double_t  GetMagneticField() const { return fMagneticField; }
+  UInt_t    GetPeriodNumber()  const { return fPeriodNumber; }
+  Int_t     GetRunNumber()     const { return fRunNumber; }
+  UInt_t    GetOrbitNumber()   const { return fOrbitNumber; }
+  UShort_t  GetBunchCrossNumber() const { return fBunchCrossNumber; }
+  UInt_t    GetTimeStamp()     const { return fTimeStamp; }
+  ULong64_t GetTriggerMask()   const { return fTriggerMask; }
+  
+  TString GetFiredTriggerClasses() const { TString s; return s; } //!!
+  UInt_t GetEventSpecie() const { return 0; }  //!!
+
+  Int_t GetNumberOfTracks() const { return fNTracks; }
+  Int_t GetNumberOfV0s() const { return fNV0s; }
+  Int_t GetNumberOfKinks() const { return 0; }  
 
+  AliVVtrack* GetTrack(Int_t /*i*/) const { return NULL; }
+  AliESDkink* GetKink(Int_t /*i*/) const { return NULL;}
 
-  AliFlatESDEvent(AliESDEvent *esd);   
-  AliFlatESDEvent(AliESDEvent *esd, Bool_t useESDFriends);   
-  virtual ~AliFlatESDEvent();  
+  void ConnectTracks(){} // initialisation, needed by the ESD event, part of VVevent interface
 
   // --------------------------------------------------------------------------------
   // -- Fill / Set methods
-  void Reset();
+  void Init();
 
-  Int_t Fill( const AliESDEvent *esd, const Bool_t useESDFriends = kTRUE, const Bool_t fillV0s=kTRUE );
+  Int_t FillFromESD( const size_t allocatedMemorySize, const AliESDEvent *esd, const Bool_t useESDFriends = kTRUE, const Bool_t fillV0s=kTRUE );
 
-  void FillPrimaryVertices( const AliESDVertex *vertexSPD,
-                           const AliESDVertex *vertexTracks );
+  void  SetMagneticField( Double_t mf ){ fMagneticField = mf; }
+  void  SetPeriodNumber( Int_t n ) { fPeriodNumber = n; }
+  void  SetRunNumber( Int_t n ) { fRunNumber = n; }
+  void  SetOrbitNumber( UInt_t n ) { fOrbitNumber = n; }
+  void  SetBunchCrossNumber( UShort_t n ) { fBunchCrossNumber = n; }
+  void  SetTimeStamp( UInt_t timeStamp ){ fTimeStamp = timeStamp; }
+  void  SetTriggerMask(ULong64_t n) { fTriggerMask = n; }
+  
+  AliFlatESDTrigger *FillTriggersStart();
+  void FillTriggersEnd( Int_t nTriggerClasses, size_t triggersSize );
 
-  AliFlatESDTrack *GetNextTrackPointer(){ 
-    return reinterpret_cast<AliFlatESDTrack*> (fContent + fSize);
-  }
-
-  void StoreLastTrack(){ 
-    fNTracks++;
-    fSize+= GetNextTrackPointer()->GetSize();
-    fV0Pointer = fSize;
-  }
-
-  AliFlatESDV0 *GetNextV0Pointer(){
-               return reinterpret_cast<AliFlatESDV0*> (fContent + fSize);
-}
+  void FillPrimaryVertices( const AliESDVertex *vertexSPD, const AliESDVertex *vertexTracks );
+
+  AliFlatESDTrack *FillTracksStart();
+  void FillTracksEnd( Int_t nTracks, size_t tracksSize );
+
+  AliFlatESDV0 *FillV0sStart();
+  void FillV0sEnd( Int_t nV0s, size_t v0sSize );  
 
-  void StoreLastV0(){ 
-    fNV0s++;
-    fSize+= sizeof(AliFlatESDV0);
-  }
 
   // --------------------------------------------------------------------------------
   // -- Getter methods
 
-   const AliFlatESDVertex* GetPrimaryVertexSPD() const {
-    if (fPrimaryVertexMask & 0x1){
-                return reinterpret_cast< AliFlatESDVertex*> (const_cast<Byte_t*>(fContent));
-       }
-       else return NULL;
-  } 
 
-  const  AliFlatESDVertex* GetPrimaryVertexTracks() const { 
-    if (fPrimaryVertexMask & 0x2){
-                return reinterpret_cast< AliFlatESDVertex*> (const_cast<Byte_t*>(fContent)) + CountBits(fPrimaryVertexMask, 0x1);
-       }
-       else return NULL;
-   } 
+  const AliFlatESDVertex* GetPrimaryVertexSPD() const ;
+  const AliFlatESDVertex* GetPrimaryVertexTracks() const ;
 
-  Int_t GetNumberOfV0s() const {return fNV0s;}
-
-  Int_t GetNumberOfTracks() const {return fNTracks;}
-  
-  AliFlatESDV0* GetV0stmp() {
-       return reinterpret_cast<AliFlatESDV0*> (fContent + fV0Pointer);
-  }
-  
-  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*/) const {return NULL;}
-  AliESDkink* 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;}
-  AliVVfriendEvent* FindFriend() 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;}
-  void ConnectTracks(){}
-  void ReadFromTree(TTree* /*tree*/, Option_t* /*opt*/) {};
-  TList* GetList() const;
+  Int_t GetNumberOfTriggerClasses() const { return fNTriggerClasses; }
+   
+  const AliFlatESDTrigger *GetTriggerClasses() const { return reinterpret_cast<const AliFlatESDTrigger*>( fContent + fTriggerPointer ); }
+  const AliFlatESDTrack   *GetTracks() const { return reinterpret_cast<const AliFlatESDTrack*>( fContent + fTracksPointer ); }
+  const AliFlatESDV0      *GetV0s() const { return reinterpret_cast<const AliFlatESDV0*>( fContent + fV0Pointer ); }
 
   // --------------------------------------------------------------------------------
   // -- Size methods
-  static ULong64_t EstimateSize(AliESDEvent*esd, Bool_t useESDFriends = kTRUE, Bool_t fillV0s=kTRUE);
-         ULong64_t GetSize()    {return fContent - reinterpret_cast<Byte_t*>(this) + fSize;}
 
+  ULong64_t  GetSize()  const { return fContent + fContentSize - reinterpret_cast<const Byte_t*>(this); }
 
-//
-// Initializing function
-//
-// to be called after event is received via reinterpret_cast from memory
-
-void Reinitialize();
+  static ULong64_t EstimateSize(AliESDEvent*esd, Bool_t useESDFriends = kTRUE, Bool_t fillV0s=kTRUE );
 
  private:
-  AliFlatESDEvent(const AliFlatESDEvent&);
-  AliFlatESDEvent& operator=(const AliFlatESDEvent&);
-  
-// special constructor, to be called by placement new,
-// when accessing information after reinterpret_cast
-// so that vtable is generated, but values are not overwritten
-       AliFlatESDEvent(AliFlatESDSpecialConstructorFlag){}
 
-  void FillPrimaryVertex(const AliESDVertex *v, Byte_t flag);
+  AliFlatESDEvent( const AliFlatESDEvent& );
+  AliFlatESDEvent& operator=( const AliFlatESDEvent& );
+
+  Int_t AddTriggerClass(  const char *TriggerClassName, Int_t TriggerIndex, ULong64_t MaxSize );
+  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) const;
+  Int_t FillNextV0( const AliESDv0 *v0);
 
-  // --------------------------------------------------------------------------------
-  // -- Fixed size member objects
-  //    -> Try to align in memory
+  const AliFlatESDVertex* GetFirstPrimaryVertex() const ;
+  Byte_t    *GetEndOfContent(){ return fContent + fContentSize; }
 
-  Byte_t   fPrimaryVertexMask;            // Bit mask specfifying which primary vertices are present
-  Int_t    fNTracks;                   // Number of tracks in vector
-  ULong64_t fTracksPointer;            // position of the first track in fContent
-  Int_t fNV0s; // Number of v0's
-  ULong64_t fV0Pointer;            // position of the first V0 in fContent
+  UInt_t CountBits(Byte_t field, UInt_t mask) const;
 
+  // --------------------------------------------------------------------------------
 
-  ULong64_t fSize;                      // Size of this object
+  // -- Fixed size member objects ( try to align in memory )
+
+  size_t     fContentSize;     // Size of fContent
+  Double32_t fMagneticField;   // Solenoid Magnetic Field in kG : for compatibility with AliMagF
+  UInt_t     fPeriodNumber;    // PeriodNumber
+  Int_t      fRunNumber;       // Run Number
+  UInt_t     fOrbitNumber;     // Orbit Number
+  UInt_t     fTimeStamp;         // Time stamp
+  UShort_t   fBunchCrossNumber;  // Bunch Crossing Number
+  Byte_t     fPrimaryVertexMask;            // Bit mask specfifying which primary vertices are present
+  ULong64_t  fTriggerMask;      // Trigger mask
+
+  UInt_t  fNTriggerClasses;  // N trigger classes
+  UInt_t  fNPrimaryVertices; // Number of primary vertices in array
+  UInt_t  fNTracks;          // Number of tracks in array
+  UInt_t  fNV0s;             // Number of v0's
   
+  // Pointers to specific data in fContent
+  
+  size_t fTriggerPointer;        // position of the first trigger description in fContent
+  size_t fPrimaryVertexPointer;  // position of the first primary vertex in fContent
+  size_t fTracksPointer;         // position of the first track in fContent
+  size_t fV0Pointer;             // position of the first V0 in fContent  
+
   // --------------------------------------------------------------------------------
+
   // -- Variable Size Object
+
   Byte_t fContent[1];                  // Variale size object, which contains all data
   
 };
+
+// Inline implementations 
+
+inline AliFlatESDTrack *AliFlatESDEvent::FillTracksStart()
+{
+  fNTracks = 0;
+  fTracksPointer = fContentSize;
+  return reinterpret_cast< AliFlatESDTrack* >( fContent + fContentSize );
+}
+
+inline void AliFlatESDEvent::FillTracksEnd( Int_t nTracks, size_t tracksSize )
+{
+  fNTracks = nTracks;
+  fContentSize += tracksSize;
+}
+
+inline AliFlatESDV0 *AliFlatESDEvent::FillV0sStart()
+{
+  fNV0s = 0;
+  fV0Pointer = fContentSize;
+  return reinterpret_cast< AliFlatESDV0* >( fContent + fContentSize );
+}
+   
+inline void AliFlatESDEvent::FillV0sEnd( Int_t nV0s, size_t v0sSize )
+{
+  fNV0s = nV0s;
+  fContentSize += v0sSize;
+}
+  
+inline AliFlatESDTrigger *AliFlatESDEvent::FillTriggersStart()
+{
+  fNTriggerClasses = 0;
+  fTriggerPointer = fContentSize;
+  return reinterpret_cast< AliFlatESDTrigger* >( fContent + fContentSize );
+}
+
+inline void AliFlatESDEvent::FillTriggersEnd( Int_t nTriggerClasses, size_t triggersSize )
+{
+  fNTriggerClasses = nTriggerClasses;
+  fContentSize += triggersSize;
+}
+
+inline const AliFlatESDVertex* AliFlatESDEvent::GetFirstPrimaryVertex() const 
+{
+  return reinterpret_cast<const AliFlatESDVertex*>(fContent + fPrimaryVertexPointer);
+}
+inline const AliFlatESDVertex* AliFlatESDEvent::GetPrimaryVertexSPD() const 
+{
+  return (fPrimaryVertexMask & 0x1) ? GetFirstPrimaryVertex() : NULL;
+} 
+
+inline const AliFlatESDVertex* AliFlatESDEvent::GetPrimaryVertexTracks() const 
+{ 
+  return (fPrimaryVertexMask & 0x2) ? (GetFirstPrimaryVertex() + (fPrimaryVertexMask & 0x1) ) : NULL;
+} 
+
 #endif
index dce1b492cc08f2b9a23fe5e5effbe776345b770f..f13a2a5b7a836669097f8eb68846faeed81dd138 100644 (file)
@@ -37,6 +37,7 @@ class AliFlatESDFriendTrack :public AliVVfriendTrack
   AliFlatESDFriendTrack( AliVVConstructorReinitialisationFlag );
 
   //implementation of AliVVfriendTrack methods 
+  Int_t GetTPCseed( AliTPCseed &) const {return -1;}
 
   //AliVVTPCseed* GetTPCseed() const {return NULL;}
   AliTPCseed* GetTPCseed() const { return NULL; }
@@ -45,9 +46,9 @@ class AliFlatESDFriendTrack :public AliVVfriendTrack
   //const AliExternalTrackParam * GetITSOut() const { return NULL; } 
   //const AliExternalTrackParam * GetTPCOut() const { return  NULL; } 
   //const AliExternalTrackParam * GetTRDIn()  const { return NULL; } 
-  const AliVVtrack * GetITSOut() const { return NULL; } 
-  const AliVVtrack * GetTPCOut() const { return  NULL; } 
-  const AliVVtrack * GetTRDIn()  const { return NULL; } 
+  //const AliVVtrack * GetITSOut() const { return NULL; } 
+  //const AliVVtrack * GetTPCOut() const { return  NULL; } 
+  //const AliVVtrack * GetTRDIn()  const { return NULL; } 
 
   // own methods
 
index 32a5465e4230e4e31d25e7e6328eb1d7f42e4f43..e0c6c5d97d3fed9626094606ee965abd1a128127 100644 (file)
@@ -55,36 +55,6 @@ AliFlatESDTrack::AliFlatESDTrack() :
 
 }
 
-// _______________________________________________________________________________________________________
-void AliFlatESDTrack::Reinitialize()
-{
-//
-// Initializing function
-//
-// to be called after track is received via reinterpret_cast from memory
-  
-  
-       new (this) AliFlatESDTrack(AliFlatESDReinitialize);
-               AliFlatExternalTrackParam* trackParam = GetTrackParamRefitted();
-               if (trackParam) { trackParam->Reinitialize(); }
-               trackParam = GetTrackParamIp();
-               if (trackParam) { trackParam->Reinitialize(); }
-               trackParam = GetTrackParamTPCInner();
-               if (trackParam) { trackParam->Reinitialize(); }
-               trackParam = GetTrackParamOp();
-               if (trackParam) { trackParam->Reinitialize(); }
-               trackParam = GetTrackParamCp();
-               if (trackParam) { trackParam->Reinitialize(); }
-               trackParam = GetTrackParamITSOut();
-               if (trackParam) { trackParam->Reinitialize(); }
-               
-               AliFlatTPCCluster* clusterTPC = GetTPCClusters();
-               for (Int_t i=0; i<fNTPCClusters; i++){
-                 clusterTPC->Reinitialize();
-                 clusterTPC++;
-                }
-}
-
 // _______________________________________________________________________________________________________
 AliFlatESDTrack::AliFlatESDTrack(const AliESDtrack* track, AliESDfriendTrack* friendTrack) :
   // Constructor
@@ -173,17 +143,15 @@ Int_t AliFlatESDTrack::Fill(const AliESDtrack* track, AliESDfriendTrack* friendT
       for (Int_t idxRow = 0; idxRow < 160; idxRow++){
        AliTPCclusterMI* currentCl = seed->GetClusterPointer(idxRow);
        if (currentCl) {
-         AliFlatTPCCluster* tmpCl = GetNextTPCClusterPointer();
-         new(tmpCl) AliFlatTPCCluster;
-         tmpCl->SetX(currentCl->GetX());
-         tmpCl->SetY(currentCl->GetY());
-         tmpCl->SetZ(currentCl->GetZ());         
-        // tmpCl->SetPadRow(idxRow); // TO BE CHECKED IF THIS NEEDED or currentCl->GetRow();
-         tmpCl->SetPadRow(currentCl->GetRow());
-         tmpCl->SetSigmaY2(currentCl->GetSigmaY2());
-         tmpCl->SetSigmaZ2(currentCl->GetSigmaZ2());
-         tmpCl->SetCharge(currentCl->GetQ());
-         tmpCl->SetQMax(currentCl->GetMax());
+         AliFlatTPCCluster &tmpCl = *GetNextTPCClusterPointer();
+         tmpCl.SetX( currentCl->GetX() );
+         tmpCl.SetY( currentCl->GetY() );
+         tmpCl.SetZ( currentCl->GetZ() );        
+         tmpCl.SetPadRow( idxRow ); // TO BE CHECKED IF THIS NEEDED or currentCl->GetRow();
+         tmpCl.SetSigmaY2( currentCl->GetSigmaY2() );
+         tmpCl.SetSigmaZ2( currentCl->GetSigmaZ2() );
+         tmpCl.SetCharge( currentCl->GetQ() );
+         tmpCl.SetQMax( currentCl->GetMax() );
          StoreLastTPCCluster();
        }
        //      else
@@ -225,7 +193,7 @@ Int_t AliFlatESDTrack::Fill(const AliESDtrack* track, AliESDfriendTrack* friendT
     //    Printf("DEBUG: Number of clusters for track = %d", fNTPCClusters);
 
     // -- Sorting clusters according to user defined function (increasing pad row numbering)
-  //  std::sort(GetTPCClusters(), GetTPCClusters()+fNTPCClusters, AliFlatTPCCluster::SortClusters);
+    std::sort(GetTPCClusters(), GetTPCClusters()+fNTPCClusters, AliFlatTPCCluster::SortClusters);
   }
 
   return iResult;
@@ -276,10 +244,9 @@ Int_t AliFlatESDTrack::FillExternalTrackParam(const AliExternalTrackParam* param
   if (!param) 
     return -1;
 
-  //Printf("  DEBUG: CONTENT %d >> %p + 0x%07llx = %p", flag, fContent, fSize, fContent + fSize);
+  Printf("  DEBUG: CONTENT %d >> %p + 0x%07llx = %p", flag, fContent, fSize, fContent + fSize);
 
   AliFlatExternalTrackParam * current = reinterpret_cast<AliFlatExternalTrackParam*> (fContent + fSize);
-  new (current) AliFlatExternalTrackParam;
   current->SetAlpha(param->GetAlpha());
   current->SetX(param->GetX());
   current->SetY(param->GetY());
index 89f3bb4dbcbb6a69e2f61e641e6d90f1aa1af5ff..6dfb2bd5f09efeecf7bca19526b7b15425df831a 100644 (file)
@@ -20,20 +20,18 @@ Op - Track parameters estimated at the point of maximal radial coordinate reache
 
 #include "AliFlatTPCCluster.h"
 #include "AliFlatExternalTrackParam.h"
-#include "AliVVtrack.h"
-#include "AliFlatESDMisc.h"
 
 class AliESDtrack;
 class AliESDfriendTrack;
 class AliExternalTrackParam;
 
-class AliFlatESDTrack: public AliVVtrack {
+class AliFlatESDTrack {
  public:
   // --------------------------------------------------------------------------------
   // -- Constructor / Destructors
-  AliFlatESDTrack();
+  AliFlatESDTrack();   
   AliFlatESDTrack(const AliESDtrack* track, AliESDfriendTrack* friendTrack); 
-  virtual ~AliFlatESDTrack();  
+  ~AliFlatESDTrack();  
 
   // --------------------------------------------------------------------------------
   // -- Fill / Set methods
@@ -46,7 +44,7 @@ class AliFlatESDTrack: public AliVVtrack {
                               const AliExternalTrackParam* outerITSParam
                             );
 
-  AliFlatTPCCluster *GetNextTPCClusterPointer(){ return GetTPCCluster(fNTPCClusters); }
+  AliFlatTPCCluster *GetNextTPCClusterPointer(){ return &GetTPCCluster(fNTPCClusters); }
 
   void StoreLastTPCCluster(){  
      ++fNTPCClusters;
@@ -92,42 +90,28 @@ class AliFlatESDTrack: public AliVVtrack {
   AliFlatTPCCluster *GetTPCClusters() {
     return reinterpret_cast< AliFlatTPCCluster*>(fContent + sizeof(AliFlatExternalTrackParam)*CountBits(fTrackParamMask));
   } 
-
-
   
-  AliFlatTPCCluster *GetTPCCluster(Int_t ind) {
-    return  reinterpret_cast< AliFlatTPCCluster*>( GetTPCClusters() ) + ind ;
-  }
+  AliFlatTPCCluster &GetTPCCluster(Int_t ind) {
+    return GetTPCClusters()[ind];
+  } 
 
   Int_t GetNumberOfITSClusters() {
     return fNITSClusters;
   } 
   
-  AliFlatTPCCluster *GetITSClusters() {
-    return reinterpret_cast< AliFlatTPCCluster*>(fContent + sizeof(AliFlatExternalTrackParam)*CountBits(fTrackParamMask));
-  } 
-
   
   // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
   
-  AliFlatESDTrack *GetNextTrack() 
-{      
-       
-       return reinterpret_cast<AliFlatESDTrack*> (fContent + fSize);
-}
+  AliFlatESDTrack *GetNextTrack() {return reinterpret_cast<AliFlatESDTrack*>(fContent+fSize);}
   
   // --------------------------------------------------------------------------------
   // -- Size methods
   static ULong64_t EstimateSize(Bool_t useESDFriends = kTRUE, Int_t nTPCClusters = 160 );
          ULong64_t GetSize()  {return fContent -  reinterpret_cast<Byte_t*>(this) + fSize;}
-         
-         
-  void Reinitialize();
-
+    
  private:
   AliFlatESDTrack(const AliFlatESDTrack&);
-  AliFlatESDTrack& operator=(const AliFlatESDTrack&);  
-  AliFlatESDTrack(AliFlatESDSpecialConstructorFlag){}
+  AliFlatESDTrack& operator=(const AliFlatESDTrack&);
 
   Int_t FillExternalTrackParam(const AliExternalTrackParam* param, UShort_t flag);
 
@@ -149,5 +133,4 @@ class AliFlatESDTrack: public AliVVtrack {
   Byte_t fContent[1];                  // Variale size object, which contains all data
 
 };
-
 #endif
index 6897d845c9ee28257f933562752a40a728711f4d..cb7f653237fa7d3c14bf0562991ffadcc802f376 100644 (file)
@@ -17,3 +17,4 @@
 
 #include "AliFlatESDV0.h"
 
+
index f6dee25455c31d3c9cac6296517da2b79f44205d..afcada908bb1c371bdeff13f9c61becb020b40db 100644 (file)
@@ -6,25 +6,33 @@
  * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
 
 /**
- * >> Flat structure representing a ESD vertex <<
+ * >> Flat structure representing a ESD v0 vertex <<
  */
 
 #include "Rtypes.h"
-#include "AliFlatESDMisc.h"
 
 class AliFlatESDV0
 {
  public:
-  AliFlatESDV0();
-  virtual ~AliFlatESDV0() {}
-  void Reinitialize(){
-       new (this) AliFlatESDV0(AliFlatESDReinitialize);
-  }
+
+  AliFlatESDV0(): fNegTrackID(-1), fPosTrackID(-1) {}
+  ~AliFlatESDV0(){}
+
+  static size_t GetSize(){ return sizeof(AliFlatESDV0); }
+
+  void SetNegTrackID( Int_t id ){ fNegTrackID = id; }
+  void SetPosTrackID( Int_t id ){ fPosTrackID = id; }
+
+  Int_t GetNegTrackID() const { return fNegTrackID; }
+  Int_t GetPosTrackID() const { return fPosTrackID; }
+
+ private:
+
+  AliFlatESDV0(const AliFlatESDV0&);
+  AliFlatESDV0& operator=(const AliFlatESDV0&);
+
   Int_t fNegTrackID;
   Int_t fPosTrackID;
- private:
-       AliFlatESDV0(AliFlatESDSpecialConstructorFlag){}
 };
-//typedef struct AliFlatESDV0 AliFlatESDV0;
 
 #endif
index b8ae416d5721a3b79cb46e2eff3aa8fc2eed44d3..8dc235a0751995f23eb3d382290d02be50ac6ad5 100644 (file)
@@ -1,13 +1 @@
 #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 32f7a182a3558accb34c78201b2a459c97f9d5fc..ade0dcd1ef2ce51618a33d75ba4fe028acbbe27a 100644 (file)
 
 #include "Rtypes.h"
 #include "AliESDVertex.h"
-#include "AliFlatESDMisc.h"
 
-class AliFlatESDVertex
-//class AliFlatESDVertex
+struct AliFlatESDVertex
 {
- public:
+
   Double32_t fPosition[3];    // vertex position
   Double32_t fCov[6];  // vertex covariance matrix
   Int_t    fNContributors;  // # of tracklets/tracks used for the estimate   
@@ -27,19 +25,13 @@ class AliFlatESDVertex
     Char_t fBCID;     // BC ID assigned to vertex
   */
 
-  virtual ~AliFlatESDVertex() {}
-
   AliFlatESDVertex() :fNContributors(0), fChi2(0){
     for( int i=0; i<3; i++) fPosition[i] = -9999;
     for( int i=0; i<6; i++) fCov[i] = -9999;
   }
 
   void Set(const AliESDVertex &v );
-  
-  void Reinitialize(){
-       new (this) AliFlatESDVertex(AliFlatESDReinitialize);
-  }
-  
+
   Double32_t GetX() const { return fPosition[0]; }
   Double32_t GetY() const { return fPosition[1]; }
   Double32_t GetZ() const { return fPosition[2]; }
@@ -97,9 +89,22 @@ class AliFlatESDVertex
   Double_t GetWDist(const AliESDVertex* v) const;
   */
 
- private:
-  
-       AliFlatESDVertex(AliFlatESDSpecialConstructorFlag){}
+
 };
 
+inline 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
index be4ebf83cb6ed67c8b9c9a2bb7ceb42181ea34e6..20745d06c392db64ad786dd95a85b0c914a6890d 100644 (file)
  */
 
 #include "Rtypes.h"
-#include "AliFlatESDMisc.h"
 
-
-class AliFlatExternalTrackParam
+struct AliFlatExternalTrackParam
 {
- public:
-  AliFlatExternalTrackParam() {}
-  virtual ~AliFlatExternalTrackParam() {}
   Float_t fAlpha;     // azimuthal angle of reference frame
   Float_t fX;         // x: radial distance
   Float_t fY;         // local Y-coordinate of a track (cm)
@@ -35,10 +30,6 @@ class AliFlatExternalTrackParam
   void SetTgl(Float_t tgl)                 {fTgl = tgl;}
   void SetSigned1Pt(Float_t signed1Pt)     {fSigned1Pt = signed1Pt;}
   void SetCovEntry(Int_t idx, Float_t cov) {(idx >= 0 && idx < 15) ? fC[idx] = cov : 0.;}
-  
-  void Reinitialize(){
-       new (this) AliFlatExternalTrackParam(AliFlatESDReinitialize);
-  }
 
   Float_t  GetAlpha()             const {return fAlpha;}
   Float_t  GetX()                 const {return fX;}
@@ -49,11 +40,8 @@ class AliFlatExternalTrackParam
   Float_t  GetSigned1Pt()         const {return fSigned1Pt;}
   Float_t* GetCov()               const {return const_cast<Float_t*>(fC);}
   Float_t  GetCovEntry(Int_t idx) const {return (idx >= 0 && idx < 15) ? fC[idx] : 0.;}
-  
- private:
-       AliFlatExternalTrackParam(AliFlatESDSpecialConstructorFlag){}
 };
 
-//typedef struct AliFlatExternalTrackParam AliFlatExternalTrackParam;
+typedef struct AliFlatExternalTrackParam AliFlatExternalTrackParam;
 
 #endif
index 843bab5755ab70e92d5aad62c08ff1818e537c30..a6401a9fc10c00e7bdb4333ac9d108023abb8ec0 100644 (file)
 class AliFlatTPCCluster: public AliVVcluster
 {
   public:
+
+  AliFlatTPCCluster() : fX(0.), fY(0.), fZ(0.), fPadRow(0), fSigmaY2(0.), fSigmaZ2(0.), fCharge(0), fQMax(0) {}
+  ~AliFlatTPCCluster() {}
+
   void SetX(Float_t x)             {fX = x;}
   void SetY(Float_t y)             {fY = y;}
   void SetZ(Float_t z)             {fZ = z;}
@@ -26,7 +30,7 @@ class AliFlatTPCCluster: public AliVVcluster
   void SetQMax(UShort_t qmax)      {fQMax = qmax;}
   
   void Reinitialize(){
-       new (this) AliFlatTPCCluster(AliFlatESDReinitialize);
+    new (this) AliFlatTPCCluster(AliFlatESDReinitialize);
   }
 
   Float_t  GetX()       const      {return fX;}
@@ -38,8 +42,6 @@ class AliFlatTPCCluster: public AliVVcluster
   UShort_t GetCharge()  const      {return fCharge;}
   UShort_t GetQMax()    const      {return fQMax;}
 
-  AliFlatTPCCluster() 
-  : fX(0.), fY(0.), fZ(0.), fPadRow(0), fSigmaY2(0.), fSigmaZ2(0.), fCharge(0), fQMax(0) {}
 
   static Bool_t SortClusters(const AliFlatTPCCluster &first, const AliFlatTPCCluster &second){
     // Method to sort two clusters according to pad row
@@ -49,8 +51,9 @@ class AliFlatTPCCluster: public AliVVcluster
   }
   
   private:
-  AliFlatTPCCluster(AliFlatESDSpecialConstructorFlag){}
-  virtual ~AliFlatTPCCluster() {}
+
+ AliFlatTPCCluster(AliFlatESDSpecialConstructorFlag f): AliVVcluster(f),fX(fX),fY(fY),fZ(fZ),fPadRow(fPadRow),fSigmaY2(fSigmaY2),fSigmaZ2(fSigmaZ2),fCharge(fCharge),fQMax(fQMax){}
+
   Float_t fX;       // X coordinate in local coordinates
   Float_t fY;       // Y coordinate in local coordinates
   Float_t fZ;       // Z coordinate in local coordinates
@@ -60,8 +63,6 @@ class AliFlatTPCCluster: public AliVVcluster
   UInt_t  fCharge;  // total charge of cluster
   UInt_t  fQMax;    // QMax of cluster
   
-  
-  
 };
 
 #endif
index 274bc4f06e048bbb05f71d09a9b6f5a31412b328..9b638bb31313459f1a046a0b970a9eeec0b5fe07 100644 (file)
@@ -63,8 +63,6 @@
 #include "AliHLTTPCClusterMCData.h"
 #include "AliHLTTPCTransform.h"
 
-#include "AliSysInfo.h"
-
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTGlobalFlatEsdConverterComponent)
 
@@ -80,7 +78,6 @@ AliHLTGlobalFlatEsdConverterComponent::AliHLTGlobalFlatEsdConverterComponent()
   // refer to README to build package
   // or
   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-
 }
 
 AliHLTGlobalFlatEsdConverterComponent::~AliHLTGlobalFlatEsdConverterComponent()
@@ -263,40 +260,37 @@ int AliHLTGlobalFlatEsdConverterComponent::DoEvent( const AliHLTComponentEventDa
                                                    AliHLTComponentTriggerData& /*trigData*/,
                                                    AliHLTUInt8_t* outputPtr, 
                                                    AliHLTUInt32_t& size,
-                                                   AliHLTComponentBlockDataList& outputBlocks)
+                                                   AliHLTComponentBlockDataList& outputBlocks )
 {
-
   // see header file for class documentation
 
-
-AliSysInfo::AddStamp("DoEvent.Start");
-
-
   int iResult=0;
-  bool benchmark = true;
+#ifdef xxx
 
   if (!IsDataEvent()) return iResult;
 
   fBenchmark.StartNewEvent();
   fBenchmark.Start(0);
-  
-  
 
   size_t maxOutputSize = size;
   size = 0;
+  
+  if( maxOutputSize < sizeof( AliFlatESDEvent ) ){
+    HLTWarning("Output buffer is too small.");
+    return -ENOMEM;    
+  }
 
   AliFlatESDEvent *flatEsd = reinterpret_cast<AliFlatESDEvent*>(outputPtr); 
-  new (flatEsd) AliFlatESDEvent; //standard ctor to initialize an empty event   
+  new (flatEsd) AliFlatESDEvent;    
+
+  flatEsd->SetMagneticField( fSolenoidBz );
+  flatEsd->SetRunNumber( GetRunNo() );
+  flatEsd->SetPeriodNumber( GetPeriodNumber() );
+  flatEsd->SetOrbitNumber( GetOrbitNumber() );
+  flatEsd->SetBunchCrossNumber( GetBunchCrossNumber() );
+  flatEsd->SetTimeStamp( GetTimeStamp() );
 
   /*
-  pESD->Reset(); 
-  pESD->SetMagneticField(fSolenoidBz);
-  pESD->SetRunNumber(GetRunNo());
-  pESD->SetPeriodNumber(GetPeriodNumber());
-  pESD->SetOrbitNumber(GetOrbitNumber());
-  pESD->SetBunchCrossNumber(GetBunchCrossNumber());
-  pESD->SetTimeStamp(GetTimeStamp());
-  
   const AliHLTCTPData* pCTPData=CTPData();
   if (pCTPData) {
     AliHLTUInt64_t mask=pCTPData->ActiveTriggers(trigData);
@@ -438,7 +432,7 @@ AliSysInfo::AddStamp("DoEvent.Start");
 
     for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(AliHLTTPCDefinitions::fgkClustersDataType| kAliHLTDataOriginTPC);
         pBlock!=NULL; pBlock=GetNextInputBlock()) {
-      fBenchmark.AddInput(pBlock->fSize);
+      //fBenchmark.AddInput(pBlock->fSize);
       UInt_t slice     = AliHLTTPCDefinitions::GetMinSliceNr(*pBlock); 
       UInt_t patch  = AliHLTTPCDefinitions::GetMinPatchNr(*pBlock);
       if( slice >= kNSlices || patch>= kNPatches ){
@@ -450,7 +444,7 @@ AliSysInfo::AddStamp("DoEvent.Start");
     
     for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(AliHLTTPCDefinitions::fgkAliHLTDataTypeClusterMCInfo| kAliHLTDataOriginTPC);
         pBlock!=NULL; pBlock=GetNextInputBlock()) {
-      fBenchmark.AddInput(pBlock->fSize);
+      //fBenchmark.AddInput(pBlock->fSize);
       UInt_t slice     = AliHLTTPCDefinitions::GetMinSliceNr(*pBlock); 
       UInt_t patch  = AliHLTTPCDefinitions::GetMinPatchNr(*pBlock);
       if( slice >= kNSlices || patch>= kNPatches ){
@@ -469,7 +463,7 @@ AliSysInfo::AddStamp("DoEvent.Start");
     const AliESDVertex *primaryVertexSPD = dynamic_cast<const AliESDVertex*>( GetFirstInputObject( kAliHLTDataTypeESDVertex|kAliHLTDataOriginITS ) );
     const AliESDVertex *primaryVertexTracks = dynamic_cast<const AliESDVertex*>( GetFirstInputObject( kAliHLTDataTypeESDVertex|kAliHLTDataOriginOut ) );
     
-  //  cout<<endl<<" Primary vertex Tracks: "<<primaryVertexTracks<<", SPD: "<< primaryVertexSPD <<endl<<endl;
+    cout<<endl<<" Primary vertex Tracks: "<<primaryVertexTracks<<", SPD: "<< primaryVertexSPD <<endl<<endl;
 
     flatEsd->FillPrimaryVertices( primaryVertexSPD, primaryVertexTracks );
     
@@ -561,19 +555,13 @@ AliSysInfo::AddStamp("DoEvent.Start");
            cP.RelateToVertex( primaryVertex, fSolenoidBz, 1000 );      
        }
        
+       
        AliFlatESDTrack *flatTrack = flatEsd->GetNextTrackPointer();
-       new(flatTrack) AliFlatESDTrack;
-       //cout<<"flatTrack: "<<flatTrack<<endl;
-
-       //cout<<"GetNumberOfTPCClusters before: "<<flatTrack->GetNumberOfTPCClusters()<<endl;
 
        UInt_t nClustersTPC = tpcTrack->GetNumberOfPoints();
        UInt_t nClustersITS = itsRefit ?itsRefit->GetNumberOfPoints() :0;
 
        flatTrack->SetNumberOfITSClusters( nClustersITS );
-       //flatTrack->SetNumberOfTPCClusters(0);
-
-       //cout<<"GetNumberOfTPCClusters: "<<flatTrack->GetNumberOfTPCClusters()<<endl;
 
        if( flatEsd->GetSize() + flatTrack->EstimateSize( kTRUE, nClustersTPC ) >= maxOutputSize ){
                cout<<endl<<endl<<"NOT ENOUGH MEMORY!!!!"<<endl<<endl;
@@ -604,37 +592,32 @@ AliSysInfo::AddStamp("DoEvent.Start");
                 continue;
              } 
              const AliHLTTPCSpacePointData &cIn = clusterBlock->fSpacePoints[iCluster];
-
-             AliFlatTPCCluster *c= flatTrack->GetTPCCluster( flatTrack->GetNumberOfTPCClusters() );;
-        new (c) AliFlatTPCCluster;
-             c->SetX(cIn.GetX());
-             c->SetY(cIn.GetY());
-             c->SetZ(cIn.GetZ());
-             c->SetPadRow(cIn.GetPadRow() + AliHLTTPCTransform::GetFirstRow(iPatch));
-             c->SetSigmaY2(cIn.GetSigmaY2());
-             c->SetSigmaZ2(cIn.GetSigmaZ2());
-             c->SetCharge(cIn.GetCharge());
-             c->SetQMax(cIn.GetQMax());
+             AliFlatTPCCluster *c= flatTrack->GetNextTPCClusterPointer();
+             c->SetX( cIn.GetX() );
+             c->SetY( cIn.GetY() );
+             c->SetZ( cIn.GetZ() );
+             c->SetPadRow( cIn.GetPadRow() + AliHLTTPCTransform::GetFirstRow(iPatch) );
+             c->SetSigmaY2( cIn.GetSigmaY2() );
+             c->SetSigmaZ2( cIn.GetSigmaZ2() );
+             c->SetCharge( cIn.GetCharge() );
+             c->SetQMax( cIn.GetQMax() );
              flatTrack->StoreLastTPCCluster();
           }
        }
 
-               //      cout<<"number of tpc clusters: "<<flatTrack->GetNumberOfTPCClusters()<<endl;
-                       //cout<<"number of its clusters: "<<flatTrack->GetNumberOfITSClusters()<<endl;
        
        flatEsd->StoreLastTrack();
-       
+               
        if (fVerbosity>0) tpcTrack->Print();
     }    
   }
 
   // Fill v0's
   
-    int nV0s =0;
   {    
+    int nV0s =0;
     const AliHLTComponentBlockData* pP = GetFirstInputBlock(kAliHLTDataTypeGlobalVertexer|kAliHLTDataOriginOut);
     if (pP && pP->fSize && pP->fPtr) {
-               fBenchmark.AddInput(pP->fSize);
       const AliHLTGlobalVertexerComponent::AliHLTGlobalVertexerData *data = reinterpret_cast<AliHLTGlobalVertexerComponent::AliHLTGlobalVertexerData*>(pP->fPtr);
       const int* v0s = data->fTrackIndices + data->fNPrimTracks;
       nV0s = data->fNV0s;
@@ -645,20 +628,15 @@ AliSysInfo::AddStamp("DoEvent.Start");
        flatEsd->StoreLastV0();
       }
     } else {
-      HLTWarning(" No V0 data block");
+      HLTWarning("xxx No V0 data block");
     }
+    cout<<"\nxxxx Found "<<nV0s<<" V0's\n"<<endl;
   }
   
   // Get ITS SPD vertex
   for( const AliHLTComponentBlockData *i= GetFirstInputBlock(kAliHLTDataTypeESDVertex|kAliHLTDataOriginITS); i!=NULL; i=GetNextInputBlock() ){
     fBenchmark.AddInput(i->fSize);
   }
-  // Get Track vertex
-  for( const AliHLTComponentBlockData *i= GetFirstInputBlock(kAliHLTDataTypeESDVertex|kAliHLTDataOriginOut); i!=NULL; i=GetNextInputBlock() ){
-    fBenchmark.AddInput(i->fSize);
-  }
-
-
 
   /*
   for ( const TObject *iter = GetFirstInputObject(kAliHLTDataTypeESDVertex|kAliHLTDataOriginITS); iter != NULL; iter = GetNextInputObject() ) {
@@ -742,31 +720,10 @@ AliSysInfo::AddStamp("DoEvent.Start");
       
     size += outBlock.fSize;
   }
-
+  cout<<"iResut = "<<iResult<<endl;
   fBenchmark.Stop(0);
   HLTWarning( fBenchmark.GetStatistics() );
-  
-  
-  
-  if(benchmark){
-       
-       Double_t statistics[10]; 
-       TString names[10];
-       fBenchmark.GetStatisticsData(statistics, names);
-       //  statistics[5] = tracksTPC.size();
-       //  statistics[7] = nV0s;
-         
-       //  FillBenchmarkHistos( statistics, names);
-         fBenchmark.Reset();
-
-       AliSysInfo::AddStamp("DoEvent.Stop", (int)(statistics[1]), (int)(statistics[2]) );
-  
-  }
+#endif
   return iResult;
-
-
-
-
 }
 
-
index 00f099792a17956b224422e2d5b3c3098faa3bb2..474e550672c0e7b694f5454f7f83bf7b6de7a81b 100644 (file)
@@ -61,11 +61,11 @@ class AliHLTGlobalFlatEsdConverterComponent : public AliHLTProcessor
               AliHLTComponentTriggerData& trigData,
               AliHLTUInt8_t* outputPtr, 
               AliHLTUInt32_t& size,
-              AliHLTComponentBlockDataList& outputBlocks);
+              AliHLTComponentBlockDataList& outputBlocks );
 
   using AliHLTProcessor::DoEvent;
 
-  
+
  private:
   /** copy constructor prohibited */
   AliHLTGlobalFlatEsdConverterComponent(const AliHLTGlobalFlatEsdConverterComponent&);
@@ -96,7 +96,7 @@ protected:
   /// solenoid b field
   Double_t fSolenoidBz; //! transient
   AliHLTComponentBenchmark fBenchmark; // benchmark
-  
+
   ClassDef(AliHLTGlobalFlatEsdConverterComponent, 0)
 };
 #endif
index f6a01ca6bc8d2b851a2acc18b11c4c8830808a27..131845d08ff25194b9f0b8efbfa1e697261c89f6 100644 (file)
@@ -143,7 +143,7 @@ public:
   //
   template <typename T> void GetP(T *p) const {
     p[0]=Pt(); p[1]=Phi(); p[2]=Theta();}
-       using AliVVtrack::GetP;
+  //using AliVVtrack::GetP;
   //  template <typename T> void GetPxPyPz(T *p) const {
   //    p[0] = Px(); p[1] = Py(); p[2] = Pz();}
   Bool_t GetPxPyPz(Double_t *p) const;
@@ -165,7 +165,7 @@ public:
   Bool_t GetXYZ(Double_t *p) const {
     return GetPosition(p); }
   
-       using AliVVtrack::GetXYZ;
+  //using AliVVtrack::GetXYZ;
   Bool_t GetXYZAt(Double_t x, Double_t b, Double_t *r) const;
   
   Bool_t GetCovarianceXYZPxPyPz(Double_t /*cv*/[21]) const {AliFatal("Not implemented"); return 0;}
index 3110db2e951ea76d4833dc803e14d2a93be2d6f5..aa36cb7970f827fd6a8f083edf0abbb6a9ee222b 100644 (file)
@@ -50,7 +50,7 @@ class AliPicoTrack: public AliVTrack {
   Bool_t          IsEMCAL()                   const { return fEmcal;  }
   ULong_t         GetStatus()                 const { return 0;       }
   Bool_t          GetXYZ(Double_t *v)         const { v[0]=0; v[1]=0; v[2]=0; return 0; }
-  using AliVVtrack::GetXYZ;
+  using AliVTrack::GetXYZ;
   Double_t        GetBz()                     const { return 0;       }
   void            GetBxByBz(Double_t b[3])    const { b[0]=0;b[1]=0;b[2]=0; }
   Bool_t          GetCovarianceXYZPxPyPz(Double_t /*cv*/[21]) const { return 0; }
index d408185d61b11670f3dc71f1b1991e446b57fdec..b14ec62c5dc40d0fb57691053427e26e60110187 100644 (file)
@@ -31,7 +31,6 @@ class AliVEvent;
 class AliMultiplicity; 
 class AliAODTracklets;  // XZhang 20120615
 class AliAODTrack;
-class AliESDtrack;
 class AliESDPmdTrack;
 class AliFlowBayesianPID;
 class AliESDkink;
index f59c0bdacc0607961e32349b7b8ecf0d03eb2bac..86311d93677d73a8cf951c4d7bb8dfcad052c35d 100644 (file)
@@ -895,7 +895,7 @@ void AliAnalysisTaskJetProtonCorr::UserExec(Option_t * /* option */)
          AliTOFPIDResponse &tofResponse = fPIDResponse->GetTOFResponse();
 
          Float_t p = trk->P();
-         if (const AliVVtrack *param = trk->GetInnerParam())
+         if (const AliExternalTrackParam *param = trk->GetInnerParam())
            p = param->GetP();
 
          Double_t expTOF = fPIDResponse->GetTOFResponse().GetExpectedSignal(trk, AliPID::kProton);
index 31a69a6cbd64ee3b18e826247ead66d66fe64a4f..8bd7db45252b05f1f9605cab551d9f4f8e73e28f 100644 (file)
@@ -78,7 +78,7 @@ class AliAODRecoDecay : public AliVTrack {
   virtual UChar_t  GetITSClusterMap() const;
   virtual ULong_t  GetStatus() const;
   virtual Bool_t   GetXYZ(Double_t *p) const { return XvYvZv(p); }
-  using AliVVtrack::GetXYZ;
+  using AliVTrack::GetXYZ;
   virtual Bool_t   GetCovarianceXYZPxPyPz(Double_t cv[21]) const;
   virtual Bool_t   PropagateToDCA(const AliVVertex* vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]);
 
index ab9cef24a7f62e05cd632de98975ff564f8b437d..aa9d7fb2cce59e0b92c55be8510ccdcf226ad792 100644 (file)
@@ -203,7 +203,6 @@ class AliAODTrack : public AliVTrack {
   //
   template <typename T> void GetP(T *p) const {
     p[0]=fMomentum[0]; p[1]=fMomentum[1]; p[2]=fMomentum[2];}
-    using AliVVtrack::GetP;
 
 //  template <typename T> void GetPxPyPz(T *p) const {
 //    p[0] = Px(); p[1] = Py(); p[2] = Pz();}
@@ -222,8 +221,7 @@ class AliAODTrack : public AliVTrack {
     fCovMatrix->GetCovMatrix(covMatrix); return kTRUE;}
 
   Bool_t GetXYZ(Double_t *p) const {
-    return GetPosition(p); }
-  using AliVVtrack::GetXYZ;
+    return GetPosition(p); }  
   
   Bool_t GetXYZAt(Double_t x, Double_t b, Double_t *r) const;
   Bool_t GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz=0, Double_t* alpSect=0) const;  
index e40820d778b87b76edfba82e8be2e38a1706952a..69d79f4f165730423619a6fadd87fa537828790d 100644 (file)
@@ -82,8 +82,6 @@
 
 ClassImp(AliESDEvent)
 
-
-
 // here we define the names, some classes are no TNamed, therefore the classnames 
 // are the Names
   const char* AliESDEvent::fgkESDListName[kESDListN] = {"AliESDRun",
index ac64e0a5a8eb16184227584d2b126863d999b979..7e8824e4f38e12991947c99c01f8e024c6697626 100644 (file)
@@ -528,7 +528,10 @@ public:
   void SetDAQAttributes(UInt_t attributes) {fDAQAttributes = attributes;}
   UInt_t GetDAQDetectorPattern() const {return fDAQDetectorPattern;}
   UInt_t GetDAQAttributes() const {return fDAQAttributes;}
-  
+
+  // interface to AliVVevent
+  AliESDtrack *GetVVTrack(Int_t i) const { return GetTrack(i); }
+
 protected:
   AliESDEvent(const AliESDEvent&);
   static Bool_t ResetWithPlacementNew(TObject *pObject);
index bf5cf6975e533809bb397c87b2b452825a4269b6..d21b83e3702a79fb37cb24bb792bd18ce70712e6 100644 (file)
@@ -23,6 +23,7 @@
 #include "TObjArray.h"
 #include "TClonesArray.h"
 #include "AliKalmanTrack.h"
+#include "AliVVTPCseed.h"
 
 ClassImp(AliESDfriendTrack)
 
@@ -149,6 +150,17 @@ TObject * AliESDfriendTrack::GetCalibObject(Int_t index) const {
   return fCalibContainer->At(index);
 }
 
+Int_t AliESDfriendTrack::GetTPCseed( AliTPCseed &seed) const {
+  TObject* calibObject = NULL;
+  AliVVTPCseed* seedP = NULL;
+  for (Int_t idx = 0; (calibObject = GetCalibObject(idx)); ++idx) {
+    if ((seedP = dynamic_cast<AliVVTPCseed*>(calibObject))) {
+      seedP->CopyToTPCseed( seed );
+      return 0;
+    }
+  }
+  return -1;
+}
 
 void AliESDfriendTrack::SetTPCOut(const AliExternalTrackParam &param) {
   // 
index 96fa048479abdb90f54ba429797810c9ef5a2f0b..56a950c631bca451fe72b8b5eb06ef6e640d6b06 100644 (file)
@@ -15,7 +15,6 @@
 
 class AliKalmanTrack;
 class TObjArrray;
-class AliVVtrack;
 class AliTPCseed;
 
 
@@ -47,7 +46,7 @@ public:
   AliKalmanTrack *GetITStrack() {return fITStrack;}
   void AddCalibObject(TObject * calibObject); 
   TObject * GetCalibObject(Int_t index) const;
-  AliTPCseed* GetTPCseed() const {return NULL;}
+
   //
   // parameters backup
   void SetTPCOut(const AliExternalTrackParam &param);
@@ -71,6 +70,10 @@ public:
   void SetSkipBit(Bool_t skip){SetBit(23,skip);}
   Bool_t TestSkipBit() {return TestBit(23);}
 
+  // VVfriendTrack interface
+
+  Int_t GetTPCseed( AliTPCseed &) const;
+
 protected:
   Float_t f1P;                     // 1/P (1/(GeV/c))
   Int_t fnMaxITScluster; // Max number of ITS clusters
index 932a6a75e8fd54ff4bbaacae96b722334b609b4c..c239a588ab2e999f4bf891b4007545c94b9d1431 100644 (file)
@@ -3302,3 +3302,5 @@ Double_t  AliESDtrack::GetdEdxInfo(Int_t regionID, Int_t calibID, Int_t qID, Int
   if (!fIp) return 0;
   return fTPCdEdxInfo->GetdEdxInfo(fIp, regionID, calibID, qID, valueID);
 }
+
+AliESDtrack tmpp;
index 1970aed770d1db174dbdab9a8eebec301a67387c..e80a2869d094c8182364992ee44b8572944be8c1 100644 (file)
@@ -30,6 +30,7 @@
 #include <TBits.h>
 #include "AliExternalTrackParam.h"
 #include "AliVTrack.h"
+#include "AliVVtrack.h"
 #include "AliESDTOFCluster.h"
 #include "AliPID.h"
 #include "AliESDfriendTrack.h"
@@ -44,7 +45,7 @@ class AliDetectorPID;
 class TTreeSRedirector;
 class AliESDEvent;
 
-class AliESDtrack : public AliExternalTrackParam {
+class AliESDtrack : public AliExternalTrackParam, public AliVVtrack {
 public:
   //
   enum {kNITSchi2Std=3};
@@ -97,7 +98,7 @@ public:
   Double_t M() const;
   Double_t E() const;
   Double_t Y() const;
-
   Bool_t GetConstrainedPxPyPz(Double_t *p) const {
     if (!fCp) return kFALSE;
     return fCp->GetPxPyPz(p);
@@ -450,6 +451,10 @@ public:
   static bool OnlineMode() {return fgkOnlineMode;}
   static Double_t GetLengthInActiveZone(const AliExternalTrackParam  *paramT, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 );
   Double_t GetLengthInActiveZone( Int_t mode, Double_t deltaY, Double_t deltaZ, Double_t bz, Double_t exbPhi =0 , TTreeSRedirector * pcstream =0 ) const;
+
+  // extra AliVVtrack interface
+  Double_t GetPt() const { return Pt(); }
+
 protected:
   
   AliExternalTrackParam *fCp; // Track parameters constrained to the primary vertex
index af7da1b114395f326c7a437a7af493b965707f5e..55780c98c5a2b9d9a8d7481236c6fdeaf95063f7 100644 (file)
@@ -75,8 +75,7 @@ public:
   Double_t  GetChi2V0()  const {return fChi2V0;}
   void     GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;
   void     GetNPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;
-  void     GetPPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;
-  using AliVVtrack::GetXYZ;
+  void     GetPPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;  
   void     GetXYZ(Double_t &x, Double_t &y, Double_t &z) const;
   Float_t  GetD(Double_t x0,Double_t y0) const;
   Float_t  GetD(Double_t x0,Double_t y0,Double_t z0) const;
index cef7153c43adda197fa6847bfc7d9fec768a65b2..56725de327787e00697481184c6a588c9114fce6 100644 (file)
@@ -222,8 +222,7 @@ class AliExternalTrackParam: public AliVTrack {
   Bool_t ConstrainToVertex(const AliVVertex* vtx, Double_t b[3]);
   
   void GetDirection(Double_t d[3]) const;
-  Bool_t GetPxPyPz(Double_t *p) const;
-  using AliVVtrack::GetXYZ;
+  Bool_t GetPxPyPz(Double_t *p) const;  
   Bool_t GetXYZ(Double_t *p) const;
   Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const;
   Bool_t GetPxPyPzAt(Double_t x, Double_t b, Double_t p[3]) const;
index 6aa333d51d0ee5f0c7204be7cf24570257fe3f1d..e71bb1018fcb8c002652fe781e387168bf2c17aa 100644 (file)
@@ -1370,7 +1370,7 @@ 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 AliVVtrack* ip = track->GetInnerParam();
+  const AliExternalTrackParam* ip = track->GetInnerParam();
   if (ip) track=dynamic_cast<const AliVTrack*>(ip);
 
   Bool_t trackAtInner = track->GetXYZAt(innerRadius, fMagField, trackPositionInner);
index 37440f5bf8957b6a85ad73c1a0ee56da26983353..65f8044baa1154665d55813fe3549df2ecf6fcaf 100644 (file)
@@ -13,7 +13,6 @@
 #include <Rtypes.h>
 #include <TObject.h>
 #include "AliVVMisc.h"
-#include "AliVVtrack.h"
 
 #include <float.h>
 
@@ -23,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, public AliVVtrack {
+class AliVParticle: public TObject {
 
 public:
   AliVParticle() { }
index 5585fc4447826deb3563c147fe0a8fe99ef18eda..bb79f465f3ee06545a917e4a41687b6548d6dd64 100644 (file)
 
 #include "AliVParticle.h"
 #include "AliPID.h"
+#include "AliVVMisc.h"
 
 class AliVEvent;
 class AliVVertex;
 class AliTPCdEdxInfo;
 class AliDetectorPID;
 class AliTOFHeader;
-class AliVVtrack;
+class AliExternalTrackParam;
 
 class AliVTrack: public AliVParticle {
 
 public:
@@ -133,7 +133,11 @@ public:
   virtual void GetHMPIDmip(Float_t &/*x*/, Float_t &/*y*/, Int_t &/*q*/,Int_t &/*nph*/) const {;}
   
   virtual Bool_t GetOuterHmpPxPyPz(Double_t */*p*/) const {return kFALSE;}
-  
+
+  virtual const AliExternalTrackParam * GetInnerParam() const { return NULL;}
+  virtual const AliExternalTrackParam * GetOuterParam() const { return NULL;}
+  virtual const AliExternalTrackParam * GetTPCInnerParam() const { return NULL;}
+
   virtual void      GetIntegratedTimes(Double_t */*times*/, Int_t nspec=AliPID::kSPECIESC) const;
   virtual Double_t  GetTRDmomentum(Int_t /*plane*/, Double_t */*sp*/=0x0) const {return 0.;}
   virtual void      GetHMPIDpid(Double_t */*p*/) const {;}
@@ -141,14 +145,11 @@ public:
   
   virtual ULong_t  GetStatus() const = 0;
   virtual Bool_t   GetXYZAt(Double_t /*x*/, Double_t /*b*/, Double_t* /*r*/ ) const ;
-  using AliVVtrack::GetXYZ;
   virtual Bool_t   GetXYZ(Double_t* /*p*/) const ;
   virtual Double_t GetBz() const;
   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    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 6d755b4c4dd95544b2b7f8b7a39728fedaf7a1c1..0a201517f307ee0a94c329b70bc02664323af7cb 100644 (file)
@@ -6,10 +6,13 @@
  * Primary Author: Mikolaj Krzewicki, mkrzewic@cern.ch
  */
 #include "Rtypes.h"
+class AliTPCseed;
+
 class AliVVTPCseed {
   public:
   AliVVTPCseed() {}
   virtual ~AliVVTPCseed() {}
+  virtual void CopyToTPCseed( AliTPCseed &) const = 0;
   ClassDef(AliVVTPCseed, 1);
 };
 
index 6fe9a6bdccd36b13e615d4ecb3f495e9f2f6a9da..352ddbd378aff59ad66b341072c133b85cabaa26 100644 (file)
@@ -32,31 +32,39 @@ class AliVVevent {
 
   // --------------------------------------------------------------------------------
   // Access methods
+
+  virtual Double_t  GetMagneticField() const = 0;
+  virtual UInt_t    GetPeriodNumber()  const = 0;
+  virtual Int_t     GetRunNumber()     const = 0;
+  virtual UInt_t    GetOrbitNumber()   const = 0;
+  virtual UShort_t  GetBunchCrossNumber() const = 0;
+  virtual UInt_t    GetTimeStamp()     const = 0;
+  virtual ULong64_t GetTriggerMask()   const = 0;
+  virtual TString GetFiredTriggerClasses() const = 0;
+  virtual UInt_t GetEventSpecie() const = 0;  
+
+  virtual Int_t GetNumberOfTracks() const = 0;
+  virtual Int_t GetNumberOfV0s() const = 0;
+  virtual Int_t GetNumberOfKinks() const = 0;
+
   /* 
   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 = 0;
+  virtual AliVVtrack* GetVVTrack(Int_t /*i*/) const = 0;
   virtual AliESDkink* GetKink(Int_t /*i*/) const = 0;
   //virtual AliVVtrack* GetV0(Int_t /*i*/) const = 0;
-  virtual Int_t GetNumberOfTracks() const =0;
-  virtual Int_t GetNumberOfV0s() const = 0;
-  virtual Int_t GetNumberOfKinks() const = 0;
-  virtual Int_t GetEventNumberInFile() const = 0;
-  virtual Int_t GetRunNumber() const = 0;
-  virtual TString GetFiredTriggerClasses() const = 0;
-  virtual ULong64_t GetTriggerMask() const = 0;
-  virtual Double_t GetMagneticField() const = 0;
-  virtual UInt_t GetTimeStamp() const = 0;
-  virtual UInt_t GetEventSpecie() const = 0;  
+
+  virtual void ConnectTracks() = 0;
 
   // ESD interfaces, not yet implemented in flat esd (may be not needed, may be need some changes)
+
+  //virtual Int_t GetEventNumberInFile() const = 0;
   //virtual const AliMultiplicity* GetMultiplicity() const = 0; //by default SPDmult
   //virtual TObject* FindListObject(const char* /*name*/) const = 0;
   //virtual AliVVfriendEvent* FindFriend() const = 0;
-  //virtual void ConnectTracks() = 0;
   //virtual void ReadFromTree(TTree* /*tree*/, Option_t* /*opt*/) = 0;
   //virtual TList* GetList() const = 0;
 
index 683f5b49deb6d0a851702e15d88564e3a38c992f..a0758c291705440501637935ff2d5ecd10d3a5c0 100644 (file)
@@ -7,7 +7,6 @@
 #include "Rtypes.h"
 class AliTPCseed;
 class AliVVtrackPointArray;
-class AliVVtrack;
 
 //_____________________________________________________________________________
 class AliVVfriendTrack {
@@ -20,12 +19,13 @@ public:
   virtual ~AliVVfriendTrack(){}
 
   //used in calibration
-  virtual AliTPCseed* GetTPCseed() const {return NULL;}
-  virtual const AliVVtrackPointArray *GetTrackPointArray() const {return NULL;}
-  virtual const AliVVtrack * GetITSOut() const {return NULL;} 
-  virtual const AliVVtrack * GetTPCOut() const {return  NULL;} 
-  virtual const AliVVtrack * GetTRDIn()  const {return NULL;} 
-  virtual TObject* GetCalibObject(Int_t /*index*/) const {return NULL;}
+  
+  virtual Int_t GetTPCseed( AliTPCseed &) const = 0;
+  //virtual const AliVVtrackPointArray *GetTrackPointArray() const {return NULL;}
+  //virtual const AliVVtrack * GetITSOut() const {return NULL;} 
+  //virtual const AliVVtrack * GetTPCOut() const {return  NULL;} 
+  //virtual const AliVVtrack * GetTRDIn()  const {return NULL;} 
+  // virtual TObject* GetCalibObject(Int_t /*index*/) const = 0;
 
 private: 
   AliVVfriendTrack(const AliVVfriendTrack &);
index 73ab69b1c70c01a357530072fa9848ad2a618c47..2b5988f82c73175a3963b19119c8671773e128ac 100644 (file)
  **************************************************************************/
 
 #include "AliVVtrack.h"
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamRefitted() { return NULL; } 
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamIp() { return NULL; } 
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamTPCInner() { return NULL; } 
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamOp() { return NULL; } 
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamCp() { return NULL; } 
-  AliFlatExternalTrackParam* AliVVtrack::GetTrackParamITSOut() { return NULL; } 
-
-  // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
-  Int_t AliVVtrack::GetNumberOfTPCClusters() { return 0; } 
-  AliFlatTPCCluster* AliVVtrack::GetTPCClusters() { return NULL; } 
-  AliFlatTPCCluster* AliVVtrack::GetTPCCluster(Int_t /*ind*/) { return NULL; } 
-  Int_t AliVVtrack::GetNumberOfITSClusters() { return 0; }
-  AliVVtrack *AliVVtrack::GetNextTrack() {return NULL; }
-
-  Bool_t AliVVtrack::GetXYZ(Double_t* /*p*/) const {return kFALSE;}
-  void  AliVVtrack::GetXYZ(Double_t& /*x*/, Double_t& /*y*/, Double_t& /*z*/) const {}
-  Bool_t AliVVtrack::GetXYZAt(Double_t /*x*/, Double_t /*y*/, Double_t* /*z*/) const {return kFALSE;}
-  Double_t AliVVtrack::GetTgl()  const {return 0.;}
-  UShort_t AliVVtrack::GetTPCNclsF() const { return 0;}
-
-  Double_t AliVVtrack::GetTOFsignalDz() const {return 0.;}
-  void AliVVtrack::GetImpactParameters(Float_t& /*xy*/,Float_t& /*z*/) const {}
-  //TODO:
-  void AliVVtrack::GetDZ(Double_t /*x*/,Double_t /*y*/,Double_t /*z*/,Double_t /*b*/, Float_t dz[2]) const {if (dz[0]==0) return;}
-
-  Float_t AliVVtrack::GetTPCClusterInfo(Int_t nNeighbours, Int_t type, Int_t row0, Int_t row1, Int_t bitType ) const {return 0.*nNeighbours*type*row0*row1*bitType;}
-  UShort_t AliVVtrack::GetTPCncls(Int_t row0,Int_t row1) const {return 0*row0*row1;}
-  Bool_t AliVVtrack::IsOn(Int_t /*mask*/) const {return kFALSE;}
-  void AliVVtrack::GetDirection(Double_t d[3]) const {if (d[0]==0) return;}
-  const Double_t *AliVVtrack::GetParameter() const {return 0;}
-  void AliVVtrack::GetImpactParametersTPC(Float_t& /*xy*/,Float_t& /*z*/) const {}
-  Int_t AliVVtrack::GetNumberOfClusters() const {return 0;} 
-  const AliVVtrack* AliVVtrack::GetTPCInnerParam() const {return NULL;}
-  Double_t AliVVtrack::Pt() const {return 0.;}
-  Double_t AliVVtrack::GetP() const {return 0.;}
-  Double_t AliVVtrack::GetTPCmomentum() const {return 0.;}
-  ULong_t AliVVtrack::GetStatus() const {return 0;}
-  const AliVVtrack * AliVVtrack::GetOuterParam() const { return NULL;}
-  const AliVVtrack * AliVVtrack::GetInnerParam() const { return NULL;}
-  Int_t AliVVtrack::GetKinkIndex(Int_t /*i*/) const { return 0;}
-  Double_t AliVVtrack::Eta() const {return 0.;}
-  Double_t AliVVtrack::GetY() const {return 0.;}
-  
-  Double_t AliVVtrack::GetX() const {return 0.;}
-  Double_t AliVVtrack::GetZ() const {return 0.;}
-  Int_t AliVVtrack::GetNcls(Int_t /*idet*/) const {return 0;}
-  void AliVVtrack::GetIntegratedTimes(Double_t* /*times*/, Int_t nspec) const {if (nspec<0) return;}
-  Double_t AliVVtrack::GetSigned1Pt()  const {return 0.;}  
-  Double_t AliVVtrack::GetLinearD(Double_t /*xv*/, Double_t /*yv*/) const {return 0.;}
-  const AliVVtrack *AliVVtrack::GetConstrainedParam() const {return NULL;}
-  Double_t AliVVtrack::GetAlpha() const {return 0.;}
-  Char_t AliVVtrack::GetITSclusters(Int_t* /*idx*/) const {return 0;}
-  Double_t AliVVtrack::GetSign() const {return 0.;}
-  UShort_t AliVVtrack::GetTPCNcls() const { return 0;}
-  Float_t AliVVtrack::GetTPCCrossedRows() const {return 0.;}
-  Double_t AliVVtrack::GetTPCsignal() const {return 0.;}
-  Double_t AliVVtrack::GetTOFsignal() const {return 0.;}
-  UChar_t AliVVtrack::GetTRDclusters(Int_t* /*idx*/) const {return 0;}
-  
-  //AliTPCtrack
-  Int_t AliVVtrack::GetNFoundable() const {return 0;} 
-  Double_t AliVVtrack::GetdEdx()  const {return 0.;}
index d147d5c57d04ab1f6d01ca0d536ac185ed2c9c35..ba8cbc6ed887fa7a1f43c04ee1be0b25538b93b1 100644 (file)
@@ -9,10 +9,9 @@
  * See implementation file for documentation
  */
 
-#include "AliPID.h"
+#include "Rtypes.h"
 
-class AliFlatTPCCluster;
-class AliFlatExternalTrackParam;
+class AliExternalTrackParam;
 
 class AliVVtrack {
  public:
@@ -23,71 +22,34 @@ class AliVVtrack {
 
   // --------------------------------------------------------------------------------
   // -- Getter methods
-  virtual AliFlatExternalTrackParam* GetTrackParamRefitted() ;
-  virtual AliFlatExternalTrackParam* GetTrackParamIp() ;
-  virtual AliFlatExternalTrackParam* GetTrackParamTPCInner() ;
-  virtual AliFlatExternalTrackParam* GetTrackParamOp() ;
-  virtual AliFlatExternalTrackParam* GetTrackParamCp() ;
-  virtual AliFlatExternalTrackParam* GetTrackParamITSOut() ;
-
+  /*
+  virtual Int_t GetTrackParamRefitted( AliExternalTrackParam & ) const = 0 ;
+  virtual Int_t GetTrackParamIp( AliExternalTrackParam & ) const = 0 ;
+  virtual Int_t GetTrackParamTPCInner( AliExternalTrackParam & ) const = 0 ;
+  virtual Int_t GetTrackParamOp( AliExternalTrackParam & ) const = 0 ;
+  virtual Int_t GetTrackParamCp( AliExternalTrackParam & ) const = 0 ;
+  virtual Int_t GetTrackParamITSOut( AliExternalTrackParam & ) const = 0 ;
+  */
   // --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
-  virtual Int_t GetNumberOfTPCClusters() ;
-  virtual AliFlatTPCCluster* GetTPCClusters() ;
-  virtual AliFlatTPCCluster* GetTPCCluster(Int_t /*ind*/) ;
-  virtual Int_t GetNumberOfITSClusters() ;
-  virtual AliVVtrack *GetNextTrack() ;
-
-  virtual Bool_t GetXYZ(Double_t* p) const ;
-  virtual Bool_t GetXYZAt(Double_t x, Double_t y, Double_t* z) const ;
-
-  //AliESDv0
-  virtual void  GetXYZ(Double_t& x, Double_t& y, Double_t& z) const ;
-
-  virtual Double_t GetTgl()  const ;
-  virtual UShort_t GetTPCNclsF() const ;
-
-  virtual Double_t GetTOFsignalDz() const ;
-  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 ;
-
-  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 ;
-  virtual UShort_t GetTPCncls(Int_t row0=0,Int_t row1=159) const ;
-  virtual Bool_t IsOn(Int_t /*mask*/) const ;
-  virtual void GetDirection(Double_t d[3]) const ;
-  virtual const Double_t *GetParameter() const ;
-  virtual void GetImpactParametersTPC(Float_t& /*xy*/,Float_t& /*z*/) const ;
-  virtual Int_t GetNumberOfClusters() const ;
-  virtual const AliVVtrack* GetTPCInnerParam() const ;
-  virtual Double_t Pt() const ;
-  virtual Double_t GetP() const ;
-  virtual Double_t GetTPCmomentum() const ;
-  virtual ULong_t GetStatus() const ;
-  virtual const AliVVtrack * GetOuterParam() const ;
-  virtual const AliVVtrack * GetInnerParam() const ;
-  virtual Int_t GetKinkIndex(Int_t /*i*/) const ;
-  virtual Double_t Eta() const ;
-  virtual Double_t GetY() const ;
-  
-  virtual Double_t GetX() const ;
-  virtual Double_t GetZ() const ;
-  virtual Int_t GetNcls(Int_t /*idet*/) const ;
-  virtual void GetIntegratedTimes(Double_t* /*times*/, Int_t nspec=AliPID::kSPECIES) const ;
-  virtual Double_t GetSigned1Pt()  const ;
-  virtual Double_t GetLinearD(Double_t /*xv*/, Double_t /*yv*/) const ;
-  virtual const AliVVtrack *GetConstrainedParam() const ;
-  virtual Double_t GetAlpha() const ;
-  virtual Char_t GetITSclusters(Int_t* /*idx*/) const ;
-  virtual Double_t GetSign() const ;
-  virtual UShort_t GetTPCNcls() const ;
-  virtual Float_t GetTPCCrossedRows() const ;
-  virtual Double_t GetTPCsignal() const ;
-  virtual Double_t GetTOFsignal() const ;
-  virtual UChar_t GetTRDclusters(Int_t* /*idx*/) const ;
-  
-  //AliTPCtrack
-  virtual Int_t GetNFoundable() const ;
-  virtual Double_t GetdEdx()  const ;
+  virtual UShort_t GetTPCNcls() const {return 0;}//= 0;
+  virtual Double_t GetPt() const {return 0;}//= 0;
+
+
+  // may be for the future
+
+  // 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 ;
+  // virtual UShort_t GetTPCncls(Int_t row0=0,Int_t row1=159) const ;
+  // virtual Bool_t IsOn(Int_t /*mask*/) const ;
+  // virtual void GetImpactParametersTPC(Float_t& /*xy*/,Float_t& /*z*/) const ;
+  // virtual ULong_t GetStatus() const ;
+  // virtual Int_t GetKinkIndex(Int_t /*i*/) const ;
+  // virtual Int_t GetNcls(Int_t /*idet*/) const ;
+  // virtual void GetIntegratedTimes(Double_t* /*times*/, Int_t nspec=AliPID::kSPECIES) const ;
+  // virtual Char_t GetITSclusters(Int_t* /*idx*/) const ;
+  // virtual Float_t GetTPCCrossedRows() const ;
+  // virtual Double_t GetTPCsignal() const ;
+  // virtual Double_t GetTOFsignal() const ;
+  // virtual UChar_t GetTRDclusters(Int_t* /*idx*/) const ;  
 
   ClassDef(AliVVtrack, 1)   // base class for track data
 
index c06ae4e1a4b2ead4159b20cc618321c32b998abb..31b99338d5ed95b6871471838a8b18577af8f562 100644 (file)
@@ -127,13 +127,13 @@ void AliAnalysisTaskPt::Exec(Option_t *)
 
   // Track loop to fill a pT spectrum
   for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
-    AliVVtrack* track = fESD->GetTrack(iTracks);
+    AliVVtrack* track = fESD->GetVVTrack(iTracks);
     if (!track) {
       Printf("ERROR: Could not receive track %d", iTracks);
       continue;
     }
-    Printf("track %d has pt = %f", iTracks, track->Pt());
-    fHistPt->Fill(track->Pt());
+    Printf("track %d has pt = %f", iTracks, track->GetPt());
+    fHistPt->Fill(track->GetPt());
   } //track loop 
 
 
@@ -145,31 +145,27 @@ void AliAnalysisTaskPt::Exec(Option_t *)
       if (!friendTrack) {
        Printf("ERROR: Could not receive track %d", iFriend);
        continue;
-      }     
-      TObject* calibObject;
-      AliTPCseed* seed = NULL;
-      //AliTPCseed* seed = friendTrack->GetTPCseed();
-      //if (seed){
-      for (Int_t idx = 0; (calibObject = friendTrack->GetCalibObject(idx)); ++idx) {
-       Printf(" |Cal %d = %p", idx, calibObject); 
-       if ((seed = dynamic_cast<AliTPCseed*>(calibObject))) {    
-         //Printf("Found TPC seed %p", seed);
-         for (Int_t irow = 0; irow < 160; irow++){
-           AliTPCclusterMI* cluMI = seed->GetClusterPointer(irow);
-           if (cluMI){
-             Printf("Found cluster at row %d", irow);
-             Float_t q = cluMI->GetQ();
-             Printf("Q = %f", q);
-             fHistQ->Fill(q);
-           }
-           else {
-             Printf("Row %d does not contain clusters", irow);
-           }            
+      }
+      
+      AliTPCseed seed;
+      Int_t err = friendTrack->GetTPCseed( seed );
+      if( err==0 ){
+       Printf("Found TPC seed" );
+       for (Int_t irow = 0; irow < 160; irow++){
+         AliTPCclusterMI* cluMI = seed.GetClusterPointer(irow);
+         if (cluMI){
+           Printf("Found cluster at row %d", irow);
+           Float_t q = cluMI->GetQ();
+           Printf("Q = %f", q);
+           fHistQ->Fill(q);
          }
-       }    
-       else {
-         //Printf("Schade... seed is %p", seed);
+         else {
+           Printf("Row %d does not contain clusters", irow);
+         }              
        }
+      }            
+      else {
+       //Printf("Schade... seed is %p", seed);
       }
     }
   }
index e6255114f351cc150a178b77f972c9493c53b12c..ef55a6637ef971709c747532a5b468cf9ffd5d81 100644 (file)
@@ -31,7 +31,7 @@ class AliESD;
 class AliTPCCalPad;
 class TClonesArray;
 
-class AliTPCseed : public AliTPCtrack {
+class AliTPCseed : public AliTPCtrack, public AliVVTPCseed {
   public:  
      AliTPCseed();
      virtual ~AliTPCseed();
@@ -153,6 +153,11 @@ class AliTPCseed : public AliTPCtrack {
   void    SetPoolID(Int_t id) {fPoolID = id;}
   Int_t   GetPoolID()  const {return fPoolID;}
   Int_t   GetNumberOfClustersIndices();  // Should be in AliTPCtrack
+
+  // AliVVTPCseed interface
+
+  void CopyToTPCseed( AliTPCseed &s) const { s = *this; }
+
  private:
      //     AliTPCseed & operator = (const AliTPCseed &)
      //  {::Fatal("= operator","Not Implemented\n");return *this;}