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