X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=ITS%2FAliITSVertexer3D.h;h=3435087d4461e4196083b263377e6fa435ac212d;hb=ceb874af8e4b6914b4dd4748d4070762c15b4918;hp=4f3a49cd4043cf524ac1feeca44d57a50eaa950b;hpb=f5f6da22c55688eb71c0472760f6b1a726b6d2fb;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSVertexer3D.h b/ITS/AliITSVertexer3D.h index 4f3a49cd404..3435087d446 100644 --- a/ITS/AliITSVertexer3D.h +++ b/ITS/AliITSVertexer3D.h @@ -12,53 +12,101 @@ /* $Id$ */ #include +#include #include +#include +#include class AliITSVertexer3D : public AliITSVertexer { public: AliITSVertexer3D(); - AliITSVertexer3D(TString filename); virtual ~AliITSVertexer3D(); - virtual AliESDVertex* FindVertexForCurrentEvent(Int_t evnumb); - virtual void FindVertices(); + virtual AliESDVertex* FindVertexForCurrentEvent(TTree *itsClusterTree); + void FindVertex3DIterative(); + void FindVertex3DIterativeMM(); + void FindVertex3D(TTree *itsClusterTree); AliESDVertex GetVertex3D() const {return fVert3D;} -// virtual void MakeTracklet(Double_t *pA, Double_t *pB, Int_t &nolines); */ -// virtual void MakeTracklet(Float_t *pA, Float_t *pB, Int_t &nolines); */ virtual void PrintStatus() const; - void SetCoarseDiffPhiCut(Float_t dphi = 0.5){fCoarseDiffPhiCut=dphi;} - void SetCoarseMaxRCut(Float_t rad = 2.5){fCoarseMaxRCut=rad;} - void SetMaxRCut(Float_t rad = 0.5){fMaxRCut=rad;} - void SetZCutDiamond(Float_t zcut = 14.0){fZCutDiamond=zcut;} - void SetMaxZCut(Float_t dz = 0.5){fMaxZCut=dz;} - void SetDCAcut(Float_t dca=0.1){fDCAcut=dca;} - void SetDiffPhiMax(Float_t pm = 0.01){fDiffPhiMax = pm;} - void SetMeanPSelTracks(Float_t pGeV=0.875){fMeanPSelTrk = pGeV;} - void SetMeanPtSelTracks(Float_t ptGeV=0.630){fMeanPtSelTrk = ptGeV;} - void SetMeanPPtSelTracks(Float_t fieldTesla); + static Bool_t DistBetweenVertices(AliESDVertex &a, AliESDVertex &b, Double_t test, Double_t &dist); + void SetWideFiducialRegion(Double_t dz = 40.0, Double_t dr=2.5){ + SetCoarseMaxRCut(dr); + SetZCutDiamond(dz); + } + void SetNarrowFiducialRegion(Double_t dz = 0.5, Double_t dr=0.5){ + SetMaxRCut(dr); + SetMaxZCut(dz); + } + void SetDeltaPhiCuts(Double_t dphiloose=0.5, Double_t dphitight=0.025){ + SetCoarseDiffPhiCut(dphiloose); + SetDiffPhiMax(dphitight); + } + void SetCoarseDiffPhiCut(Double_t dphi = 0.5){fCoarseDiffPhiCut=dphi;} + void SetFineDiffPhiCut(Double_t dphi = 0.05){fFineDiffPhiCut=dphi;} + void SetCutOnPairs(Double_t cp = 0.15){fCutOnPairs = cp;} + void SetCoarseMaxRCut(Double_t rad = 2.5){fCoarseMaxRCut=rad;} + void SetMaxRCut(Double_t rad = 0.5){fMaxRCut=rad;} + void SetMaxRCutAlgo2(Double_t rad = 0.2){fMaxRCut2=rad;} + void SetZCutDiamond(Double_t zcut = 40.0){fZCutDiamond=zcut;} + void SetMaxZCut(Double_t dz = 0.5){fMaxZCut=dz;} + void SetDCACut(Double_t dca=0.1){fDCAcut=dca;} + void SetDiffPhiMax(Double_t pm = 0.025){fDiffPhiMax = pm;} + void SetMeanPSelTracks(Double_t pGeV=0.875){fMeanPSelTrk = pGeV;} + void SetMeanPtSelTracks(Double_t ptGeV=0.630){fMeanPtSelTrk = ptGeV;} + void SetMeanPPtSelTracks(Double_t fieldTesla); + void SetMinDCAforPileup(Double_t mindist=0.1) {fDCAforPileup=mindist;} + void SetDeltaPhiforPileup(Double_t dphi=0.01) {fDiffPhiforPileup=dphi;} + void SetPileupAlgo(UShort_t optalgo=1){fPileupAlgo=optalgo;} + void SetBinSizeR(Double_t siz=0.1){fBinSizeR=siz;} + void SetBinSizeZ(Double_t siz=0.8){fBinSizeZ=siz;} + void SetMaxNumOfClusters(Int_t ncl){fMaxNumOfCl=ncl;} + Int_t GetMaxNumOfClusters() const {return fMaxNumOfCl;} protected: AliITSVertexer3D(const AliITSVertexer3D& vtxr); AliITSVertexer3D& operator=(const AliITSVertexer3D& /* vtxr */); - Int_t FindTracklets(Int_t evnumber, Int_t optCuts); + Int_t FindTracklets(TTree *itsClusterTree, Int_t optCuts); Int_t Prepare3DVertex(Int_t optCuts); void ResetVert3D(); + void FindPeaks(TH3F* histo, Double_t *peak, Int_t &nOfTracklets, Int_t &nOfTimes); + void PileupFromZ(); + void MarkUsedClusters(); + Int_t RemoveTracklets(); + void FindOther3DVertices(TTree *itsClusterTree); + enum {kMaxCluPerMod=250}; TClonesArray fLines; //! array of tracklets AliESDVertex fVert3D; // 3D Vertex - Float_t fCoarseDiffPhiCut; // loose cut on DeltaPhi for RecPoint matching - Float_t fCoarseMaxRCut; // cut on tracklet DCA to Z axis - Float_t fMaxRCut; // cut on tracklet DCA to beam axis - Float_t fZCutDiamond; // cut on +-Z of the diamond - Float_t fMaxZCut; // cut on Z distance from estimated vertex - Float_t fDCAcut; // cut on tracklet to tracklet and tracklet to vertex DCA - Float_t fDiffPhiMax; // Maximum delta phi allowed among corr. pixels - Float_t fMeanPSelTrk; // GeV, mean P for tracks with dphi<0.01 rad - Float_t fMeanPtSelTrk; // GeV, mean Pt for tracks with dphi<0.01 rad + Double_t fCoarseDiffPhiCut; // loose cut on DeltaPhi for RecPoint matching + Double_t fFineDiffPhiCut; // tight value of DeltaPhi for RP matching (2nd method) + Double_t fCutOnPairs; //cut on distance between pairs of tracklets + Double_t fCoarseMaxRCut; // cut on tracklet DCA to Z axis + Double_t fMaxRCut; // cut on tracklet DCA to beam axis + Double_t fMaxRCut2; // cut on tracklet DCA to beam axis - algo2 + Double_t fZCutDiamond; // cut on +-Z of the diamond + Double_t fMaxZCut; // cut on Z distance from estimated vertex + Double_t fDCAcut; // cut on tracklet to tracklet and tracklet to vertex DCA + Double_t fDiffPhiMax; // Maximum delta phi allowed among corr. pixels + Double_t fMeanPSelTrk; // GeV, mean P for tracks with dphi<0.01 rad + Double_t fMeanPtSelTrk; // GeV, mean Pt for tracks with dphi<0.01 rad + TBits fUsedCluster; // flag for used clusters in vertex calculation + TH1F *fZHisto; //! histogram with coarse z distribution + Double_t fDCAforPileup; // Minimum DCA to 1st vertex for pileup tracklets + Double_t fDiffPhiforPileup; // Cut on delta phi for pileup + Double_t fBinSizeR; // Histo3D bin size along radius + Double_t fBinSizeZ; // Histo3D bin size along z + UShort_t fPileupAlgo; // Algo for pileup identification + // 0->VertexerZ pileup algo + // 1->Unused RecPoints algo + Int_t fMaxNumOfCl; // max number of clusters on L1 or L2 + Bool_t fDoDownScale; // Control downscaling of tracklets in high mult + TRandom3 *fGenerForDownScale; // randomnumber generator fordownscaling - ClassDef(AliITSVertexer3D,4); + static const Int_t fgkMaxNumOfClDefault; // Default max number of clusters + + ClassDef(AliITSVertexer3D,14); };