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