]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/AliITSVertexer.h
Fix for DA's
[u/mrichter/AliRoot.git] / ITS / AliITSVertexer.h
... / ...
CommitLineData
1#ifndef ALIITSVERTEXER_H
2#define ALIITSVERTEXER_H
3
4#include<AliVertexer.h>
5#include "AliITSDetTypeRec.h"
6
7///////////////////////////////////////////////////////////////////
8// //
9// Base class for primary vertex reconstruction for ITS //
10// //
11///////////////////////////////////////////////////////////////////
12
13/* $Id$ */
14
15class TString;
16
17class AliITSVertexer : public AliVertexer {
18
19 public:
20 // default constructor
21 AliITSVertexer();
22 virtual ~AliITSVertexer();
23 virtual AliESDVertex *FindVertexForCurrentEvent(TTree *itsClusterTree)=0;
24 virtual void PrintStatus() const = 0;
25
26 virtual void ResetVertex();
27 void FindMultiplicity(TTree *itsClusterTree);
28 void SetFirstEvent(Int_t ev){fFirstEvent = ev;}
29 void SetLastEvent(Int_t ev){fLastEvent = ev;}
30 static Float_t GetPipeRadius() {return fgkPipeRadius;}
31 void SetLaddersOnLayer2(Int_t ladwid=4);
32 void SetComputeMultiplicity(Bool_t opt=kTRUE){fComputeMultiplicity=opt;}
33 virtual void SetUseModule(Int_t imod, Bool_t optUse){
34 if(imod>=0 && imod<kNSPDMod) fUseModule[imod]=optUse;
35 }
36 virtual Bool_t IsModuleUsed(Int_t imod) const {
37 if(imod>=0 && imod<kNSPDMod) return fUseModule[imod];
38 else return 0;
39 }
40
41 virtual AliESDVertex* GetAllVertices(Int_t &novertices) const {novertices = fNoVertices; return fVertArray; }
42
43 AliITSDetTypeRec *GetDetTypeRec() const {return fDetTypeRec;}
44 virtual void SetDetTypeRec(AliITSDetTypeRec *ptr){fDetTypeRec = ptr;}
45 enum{kNSPDMod=240};
46
47 // Methods containing run-loaders, should be moved to some other class
48 void Init(TString filename);
49 void WriteCurrentVertex();
50 void FindVertices();
51
52 Int_t GetMinTrackletsForPilup() const {return fMinTrackletsForPilup;}
53 void SetMinTrackletsForPilup(Int_t mint=2) {fMinTrackletsForPilup=mint;}
54 Bool_t IsPileup() const{return fIsPileup;}
55 Float_t GetZPileupV() const {
56 if(IsPileup()) return fZpuv;
57 else return -9999999.;
58 }
59 Int_t GetNTrackletsPileupV() const {
60 if(IsPileup()) return fNTrpuv;
61 else return -2;
62 }
63 protected:
64 static const Float_t fgkPipeRadius; // beam pipe radius (cm)
65 UShort_t *fLadders; // array with layer1-layer2 ladders correspondances
66 Int_t fLadOnLay2; // (2*fLadOnLay2+1)=number of layer2 ladders
67 // associated to a layer1 ladder
68 Bool_t fComputeMultiplicity; // flag to switch on/off tracklet calculation
69 Bool_t fUseModule[kNSPDMod]; // flag for enabling/disabling SPD modules
70 AliITSDetTypeRec *fDetTypeRec; //! pointer to DetTypeRec
71 Int_t fMinTrackletsForPilup; // min. n. of tracklets for pilup definition
72 Bool_t fIsPileup; // flag for pileup
73 Int_t fNTrpuv; // tracklets in pile-up vertex
74 Float_t fZpuv; // Z of second pile-up vertex
75 Int_t fNoVertices; //! number of vertices found
76 AliESDVertex* fVertArray; //! vertices (main+pileupped)
77
78 private:
79 // copy constructor (NO copy allowed: the constructor is protected
80 // to avoid misuse)
81 AliITSVertexer(const AliITSVertexer& vtxr);
82 // assignment operator (NO assignment allowed)
83 AliITSVertexer& operator=(const AliITSVertexer& /* vtxr */);
84
85 Int_t fFirstEvent; // First event to be processed by FindVertices
86 Int_t fLastEvent; // Last event to be processed by FindVertices
87
88 ClassDef(AliITSVertexer,11);
89};
90
91#endif