ROOT logo
#ifndef ALIVERTEXER_H
#define ALIVERTEXER_H

///////////////////////////////////////////////////////////////////
//                                                               //
// Base class for primary vertex reconstruction                  //
//                                                               //
///////////////////////////////////////////////////////////////////

#include<TObject.h>

class TTree;
class AliESDVertex;
class AliMultiplicity;


class AliVertexer : public TObject {

 public:
    // default constructor
    AliVertexer();  
 
    // destructor
    virtual ~AliVertexer();
    // computes the vertex for the current event
    virtual AliESDVertex* FindVertexForCurrentEvent(TTree *clustersTree)=0; 
    // computes the vertex for each event and stores it on file
    AliMultiplicity* GetMultiplicity() const {return fMult;}
    virtual void PrintStatus() const = 0;
    void SetVtxStart(Double_t x,Double_t y,Double_t z) 
      { fNominalPos[0]=x; fNominalPos[1]=y; fNominalPos[2]=z; }
    void SetVtxStartSigma(Double_t sx,Double_t sy,Double_t sz) 
      { fNominalCov[0]=sx*sx; fNominalCov[2]=sy*sy; fNominalCov[5]=sz*sz;
      fNominalCov[1]=0.; fNominalCov[3]=0.; fNominalCov[4]=0.; }
    void SetVtxStart(AliESDVertex *vtx);
    // the following method can be implemented in daughter classes 
    // (e.g. in AliITSVertexer3D). It is intended to tag pile-up events
    // novertices is the total number of vertices (1 means no pileup)
    // The returned pointer points to an array of AliESDVertx opbjects
    // with size=novertices
    virtual  AliESDVertex* GetAllVertices(Int_t &novertices) const {novertices = 0; return NULL;}
    const Double_t* GetNominalPos() const {return fNominalPos;}
    const Double_t* GetNominalCov() const {return fNominalCov;}

 protected:
    AliESDVertex *fCurrentVertex; //! pointer to the current vertex
    AliMultiplicity *fMult;     //! Multiplicity object
 
 private:
    // copy constructor (NO copy allowed: the constructor is protected
    // to avoid misuse)
    AliVertexer(const AliVertexer& vtxr);
    // assignment operator (NO assignment allowed)
    AliVertexer& operator=(const AliVertexer& /* vtxr */);

    Double_t  fNominalPos[3];   // initial knowledge on vertex position
    Double_t  fNominalCov[6];   // initial knowledge on vertex position

  ClassDef(AliVertexer,4);
};

#endif
 AliVertexer.h:1
 AliVertexer.h:2
 AliVertexer.h:3
 AliVertexer.h:4
 AliVertexer.h:5
 AliVertexer.h:6
 AliVertexer.h:7
 AliVertexer.h:8
 AliVertexer.h:9
 AliVertexer.h:10
 AliVertexer.h:11
 AliVertexer.h:12
 AliVertexer.h:13
 AliVertexer.h:14
 AliVertexer.h:15
 AliVertexer.h:16
 AliVertexer.h:17
 AliVertexer.h:18
 AliVertexer.h:19
 AliVertexer.h:20
 AliVertexer.h:21
 AliVertexer.h:22
 AliVertexer.h:23
 AliVertexer.h:24
 AliVertexer.h:25
 AliVertexer.h:26
 AliVertexer.h:27
 AliVertexer.h:28
 AliVertexer.h:29
 AliVertexer.h:30
 AliVertexer.h:31
 AliVertexer.h:32
 AliVertexer.h:33
 AliVertexer.h:34
 AliVertexer.h:35
 AliVertexer.h:36
 AliVertexer.h:37
 AliVertexer.h:38
 AliVertexer.h:39
 AliVertexer.h:40
 AliVertexer.h:41
 AliVertexer.h:42
 AliVertexer.h:43
 AliVertexer.h:44
 AliVertexer.h:45
 AliVertexer.h:46
 AliVertexer.h:47
 AliVertexer.h:48
 AliVertexer.h:49
 AliVertexer.h:50
 AliVertexer.h:51
 AliVertexer.h:52
 AliVertexer.h:53
 AliVertexer.h:54
 AliVertexer.h:55
 AliVertexer.h:56
 AliVertexer.h:57
 AliVertexer.h:58
 AliVertexer.h:59
 AliVertexer.h:60
 AliVertexer.h:61
 AliVertexer.h:62