ROOT logo
#ifndef ALIITSVERTEXER_H
#define ALIITSVERTEXER_H

#include<AliVertexer.h>
//#include "AliITSDetTypeRec.h"

///////////////////////////////////////////////////////////////////
//                                                               //
// Base class for primary vertex reconstruction  for ITS         //
// Daughter classes:                                             //
// AliITSVertexer3D                                              //
// AliITSVertexer3DTapan                                         //
// AliITSVertexerCosmics                                         //
// AliITSVertexerFast                                            //
// AliITSVertexerFixed                                           //
// AliITSVertexerZ                                               //
//                                                               //
///////////////////////////////////////////////////////////////////

/* $Id$ */

class TString;
class AliITSDetTypeRec;

class AliITSVertexer : public AliVertexer {

 public:
    // default constructor
    AliITSVertexer();   
    virtual ~AliITSVertexer();
    virtual AliESDVertex *FindVertexForCurrentEvent(TTree *itsClusterTree)=0;
    virtual void PrintStatus() const = 0;

    virtual void ResetVertex();
    void FindMultiplicity(TTree *itsClusterTree);
    void SetFirstEvent(Int_t ev){fFirstEvent = ev;}
    void SetLastEvent(Int_t ev){fLastEvent = ev;}
    static Float_t GetPipeRadius() {return fgkPipeRadius;}
    void SetLaddersOnLayer2(Int_t ladwid=4);
    void SetComputeMultiplicity(Bool_t opt=kTRUE){fComputeMultiplicity=opt;}
    virtual void SetUseModule(Int_t imod, Bool_t optUse){
      if(imod>=0 && imod<kNSPDMod) fUseModule[imod]=optUse;
    }    
    virtual Bool_t IsModuleUsed(Int_t imod) const {
      if(imod>=0 && imod<kNSPDMod) return fUseModule[imod];
      else return 0;
    }

    virtual AliESDVertex* GetAllVertices(Int_t &novertices) const {novertices = fNoVertices; return fVertArray; }

    AliITSDetTypeRec *GetDetTypeRec() const {return fDetTypeRec;}
    virtual void SetDetTypeRec(AliITSDetTypeRec *ptr){fDetTypeRec = ptr;}
    enum{kNSPDMod=240};

    // Methods containing run-loaders, should be moved to some other class
    void Init(TString filename);
    void WriteCurrentVertex();
    void FindVertices();

    Int_t GetMinTrackletsForPilup() const {return fMinTrackletsForPilup;}
    void SetMinTrackletsForPilup(Int_t mint=2) {fMinTrackletsForPilup=mint;} 
    Bool_t IsPileup() const{return fIsPileup;}
    Float_t GetZPileupV() const {
      if(IsPileup()) return fZpuv;
      else return -9999999.;
    }
    Int_t GetNTrackletsPileupV() const {
      if(IsPileup()) return fNTrpuv;
      else return -2;
    }
 protected:
    static const Float_t fgkPipeRadius;  // beam pipe radius (cm)
    UShort_t *fLadders; // array with layer1-layer2 ladders correspondances  
    Int_t fLadOnLay2;   // (2*fLadOnLay2+1)=number of layer2 ladders 
                      // associated to a layer1 ladder
    Bool_t  fComputeMultiplicity;      // flag to switch on/off tracklet calculation
    Bool_t  fUseModule[kNSPDMod]; // flag for enabling/disabling SPD modules
    AliITSDetTypeRec *fDetTypeRec;  //! pointer to DetTypeRec
    Int_t fMinTrackletsForPilup;  // min. n. of tracklets for pilup definition
    Bool_t fIsPileup;             // flag for pileup
    Int_t fNTrpuv;             // tracklets in pile-up vertex
    Float_t fZpuv;             // Z of second pile-up vertex
    Int_t fNoVertices;         //! number of vertices found 
    AliESDVertex* fVertArray;    //! vertices (main+pileupped)

 private:
    // copy constructor (NO copy allowed: the constructor is protected
    // to avoid misuse)
    AliITSVertexer(const AliITSVertexer& vtxr);
    // assignment operator (NO assignment allowed)
    AliITSVertexer& operator=(const AliITSVertexer& /* vtxr */);

    Int_t fFirstEvent;          // First event to be processed by FindVertices
    Int_t fLastEvent;           // Last event to be processed by FindVertices

  ClassDef(AliITSVertexer,11);
};

#endif
 AliITSVertexer.h:1
 AliITSVertexer.h:2
 AliITSVertexer.h:3
 AliITSVertexer.h:4
 AliITSVertexer.h:5
 AliITSVertexer.h:6
 AliITSVertexer.h:7
 AliITSVertexer.h:8
 AliITSVertexer.h:9
 AliITSVertexer.h:10
 AliITSVertexer.h:11
 AliITSVertexer.h:12
 AliITSVertexer.h:13
 AliITSVertexer.h:14
 AliITSVertexer.h:15
 AliITSVertexer.h:16
 AliITSVertexer.h:17
 AliITSVertexer.h:18
 AliITSVertexer.h:19
 AliITSVertexer.h:20
 AliITSVertexer.h:21
 AliITSVertexer.h:22
 AliITSVertexer.h:23
 AliITSVertexer.h:24
 AliITSVertexer.h:25
 AliITSVertexer.h:26
 AliITSVertexer.h:27
 AliITSVertexer.h:28
 AliITSVertexer.h:29
 AliITSVertexer.h:30
 AliITSVertexer.h:31
 AliITSVertexer.h:32
 AliITSVertexer.h:33
 AliITSVertexer.h:34
 AliITSVertexer.h:35
 AliITSVertexer.h:36
 AliITSVertexer.h:37
 AliITSVertexer.h:38
 AliITSVertexer.h:39
 AliITSVertexer.h:40
 AliITSVertexer.h:41
 AliITSVertexer.h:42
 AliITSVertexer.h:43
 AliITSVertexer.h:44
 AliITSVertexer.h:45
 AliITSVertexer.h:46
 AliITSVertexer.h:47
 AliITSVertexer.h:48
 AliITSVertexer.h:49
 AliITSVertexer.h:50
 AliITSVertexer.h:51
 AliITSVertexer.h:52
 AliITSVertexer.h:53
 AliITSVertexer.h:54
 AliITSVertexer.h:55
 AliITSVertexer.h:56
 AliITSVertexer.h:57
 AliITSVertexer.h:58
 AliITSVertexer.h:59
 AliITSVertexer.h:60
 AliITSVertexer.h:61
 AliITSVertexer.h:62
 AliITSVertexer.h:63
 AliITSVertexer.h:64
 AliITSVertexer.h:65
 AliITSVertexer.h:66
 AliITSVertexer.h:67
 AliITSVertexer.h:68
 AliITSVertexer.h:69
 AliITSVertexer.h:70
 AliITSVertexer.h:71
 AliITSVertexer.h:72
 AliITSVertexer.h:73
 AliITSVertexer.h:74
 AliITSVertexer.h:75
 AliITSVertexer.h:76
 AliITSVertexer.h:77
 AliITSVertexer.h:78
 AliITSVertexer.h:79
 AliITSVertexer.h:80
 AliITSVertexer.h:81
 AliITSVertexer.h:82
 AliITSVertexer.h:83
 AliITSVertexer.h:84
 AliITSVertexer.h:85
 AliITSVertexer.h:86
 AliITSVertexer.h:87
 AliITSVertexer.h:88
 AliITSVertexer.h:89
 AliITSVertexer.h:90
 AliITSVertexer.h:91
 AliITSVertexer.h:92
 AliITSVertexer.h:93
 AliITSVertexer.h:94
 AliITSVertexer.h:95
 AliITSVertexer.h:96
 AliITSVertexer.h:97
 AliITSVertexer.h:98
 AliITSVertexer.h:99