#ifndef ALIITSMEANVERTEXER_H #define ALIITSMEANVERTEXER_H /////////////////////////////////////////////////////////////////////// // // // Class to compute vertex position using SPD local reconstruction // // An average vertex position using all the events // // is built and saved // /////////////////////////////////////////////////////////////////////// /* $Id$ */ #include #include class TClonesArray; class TH1F; class TH2F; class AliRawReader; class AliESDVertex; class AliITSDetTypeRec; class AliITSVertexer; class AliITSMeanVertexer : public TObject { public: // default constructor AliITSMeanVertexer(Bool_t mode = kTRUE); virtual ~AliITSMeanVertexer(); Bool_t Init(); void SetFilterOnContributors(Int_t nc=1){fFilterOnContributors = nc;} Bool_t Reconstruct(AliRawReader *rawReader); void SetCutOnErrX(Double_t cut=9.5){fErrXCut = cut;} void SetCutOnR(Double_t cut=0.5){fRCut = cut;} void SetCutOnCls(UInt_t vmin=50, UInt_t vmax=7000){fLowSPD0=vmin; fHighSPD0=vmax;} void SetZFiducialRegion(Double_t zcut=40.){fZCutDiamond=zcut;} void WriteVertices(const char *filename); const TH2F*GetVertexXY() const { return fVertexXY; } const TH1F*GetVertexZ() const { return fVertexZ; } // Methods used for debug purposes Int_t GetArrayEntries() const {return fVertArray.GetEntries();} const AliESDVertex* GetElementAt(Int_t i) const {return (AliESDVertex*)fVertArray[i];} UInt_t GetSPD0cls(Int_t i) const {return fClu0[i];} Bool_t IsGoodVertex(Int_t i) const {return (fAccEvents.TestBitNumber(i)); } private: // copy constructor (NO copy allowed) AliITSMeanVertexer(const AliITSMeanVertexer& vtxr); // assignment operator (NO assignment allowed) AliITSMeanVertexer& operator=(const AliITSMeanVertexer& /* vtxr */); Bool_t Filter(AliESDVertex *vert,UInt_t mult); void AddToMean(AliESDVertex *vert); Bool_t ComputeMean(Bool_t killOutliers); void Reset(Bool_t redefine2D,Bool_t complete); void ResetArray(){fAccEvents.ResetAllBits(kTRUE); fVertArray.Clear(); fIndex=0; for(Int_t i=0;i fFilter... Bool_t fMode; //! kTRUE for Vertexer3D; //! kFALSE for VertexerTapan AliITSVertexer* fVertexer; //! vertexer TBits fAccEvents; //! bit string: 1 for good events 0 for bad ones TClonesArray fVertArray; //! array of vertices to be averaged UInt_t *fClu0; //! number of clusters on SPD inner layer Int_t fIndex; //! current index on the arrays Double_t fErrXCut; //! cut on error on X (error*1000