LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSVertexer3D.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 29 40 72.5 %
Date: 2016-06-14 17:26:59 Functions: 23 36 63.9 %

          Line data    Source code
       1             : #ifndef ALIITSVERTEXER3D_H
       2             : #define ALIITSVERTEXER3D_H
       3             : 
       4             : #include<AliITSVertexer.h>
       5             : 
       6             : ///////////////////////////////////////////////////////////////////
       7             : //                                                               //
       8             : // Class for primary vertex finding  (3D reconstruction)         //
       9             : //                                                               //
      10             : ///////////////////////////////////////////////////////////////////
      11             : 
      12             : /* $Id$ */
      13             : 
      14             : #include <TClonesArray.h>
      15             : #include <TRandom3.h>
      16             : #include <AliESDVertex.h>
      17             : #include <TH3F.h>
      18             : #include <TBits.h>
      19             : 
      20             : class AliITSVertexer3D : public AliITSVertexer {
      21             : 
      22             :  public:
      23             : 
      24             :   AliITSVertexer3D(Double_t zcut=0.);
      25             :   AliITSVertexer3D(TRootIOCtor* );
      26             :   virtual ~AliITSVertexer3D();
      27             :   virtual AliESDVertex* FindVertexForCurrentEvent(TTree *itsClusterTree);
      28             :   void FindVertex3DIterative();
      29             :   void FindVertex3DIterativeMM();
      30             :   void FindVertex3D(TTree *itsClusterTree);
      31           0 :   AliESDVertex GetVertex3D() const {return fVert3D;}
      32             :   //  Double_t *Get3DPeak() {return f3DPeak;}
      33             :   virtual void PrintStatus() const;
      34             :   static Bool_t DistBetweenVertices(AliESDVertex &a, AliESDVertex &b, Double_t test, Double_t &dist);
      35             :   void SetWideFiducialRegion(Double_t dz = 40.0, Double_t dr=2.5){
      36          16 :     SetCoarseMaxRCut(dr);
      37           8 :     SetZCutDiamond(dz);
      38           8 :   }
      39             :   void SetNarrowFiducialRegion(Double_t dz = 0.5, Double_t dr=0.5){
      40          16 :     SetMaxRCut(dr);
      41           8 :     SetMaxZCut(dz);
      42           8 :   }
      43             :   void SetDeltaPhiCuts(Double_t dphiloose=0.5, Double_t dphitight=0.025){
      44          16 :     SetCoarseDiffPhiCut(dphiloose);
      45           8 :     SetDiffPhiMax(dphitight);
      46           8 :   }
      47          32 :   void SetCoarseDiffPhiCut(Double_t dphi = 0.5){fCoarseDiffPhiCut=dphi;}
      48          16 :   void SetFineDiffPhiCut(Double_t dphi = 0.05){fFineDiffPhiCut=dphi;}
      49          16 :   void SetCutOnPairs(Double_t cp = 0.15){fCutOnPairs = cp;}
      50          32 :   void SetCoarseMaxRCut(Double_t rad = 2.5){fCoarseMaxRCut=rad;}
      51          32 :   void SetMaxRCut(Double_t rad = 0.5){fMaxRCut=rad;}
      52          16 :   void SetMaxRCutAlgo2(Double_t rad = 0.2){fMaxRCut2=rad;}
      53             :   void SetZCutDiamond(Double_t zcut = 40.0);
      54          32 :   void SetMaxZCut(Double_t dz = 0.5){fMaxZCut=dz;}
      55          32 :   void SetDCACut(Double_t dca=0.1){fDCAcut=dca;} 
      56          32 :   void SetDiffPhiMax(Double_t pm = 0.025){fDiffPhiMax = pm;}
      57         208 :   void SetMeanPSelTracks(Double_t pGeV=0.875){fMeanPSelTrk = pGeV;}
      58         208 :   void SetMeanPtSelTracks(Double_t ptGeV=0.630){fMeanPtSelTrk = ptGeV;}
      59             :   void SetMeanPPtSelTracks(Double_t fieldTesla);
      60          16 :   void SetMinDCAforPileup(Double_t mindist=0.1) {fDCAforPileup=mindist;}
      61          16 :   void SetDeltaPhiforPileup(Double_t dphi=0.01) {fDiffPhiforPileup=dphi;}
      62          32 :   void SetPileupAlgo(UShort_t optalgo=1){fPileupAlgo=optalgo;}
      63          48 :   void SetBinSizeR(Double_t siz=0.1){fBinSizeR=siz;}
      64          48 :   void SetBinSizeZ(Double_t siz=0.8){fBinSizeZ=siz;}
      65             :   void SetHighMultAlgo(UChar_t n){
      66          24 :     if(n<2) fHighMultAlgo=n;
      67           0 :     else AliError("Only algos 0 and 1 implemented");
      68           8 :   }
      69           0 :   void SetHighMultDownscalingAlgo(){fHighMultAlgo=0;}
      70           0 :   void SetHighMultTracesAlgo(){fHighMultAlgo=1;}
      71             : 
      72           0 :   void SetMaxNumOfClustersForHighMult(Int_t ncl){fMaxNumOfCl=ncl;}
      73           0 :   void SetMaxNumOfClustersForDownScale(Int_t ncl){fMaxNumOfClForDownScale=ncl;}
      74           0 :   void SetMaxNumOfClustersForRebin(Int_t ncl){fMaxNumOfClForRebin=ncl;}
      75           0 :   Int_t GetMaxNumOfClustersForHighMult() const {return fMaxNumOfCl;}
      76           0 :   Int_t GetMaxNumOfClustersForDownScale() const {return fMaxNumOfClForDownScale;}
      77           0 :   Int_t GetMaxNumOfClustersForRebin() const {return fMaxNumOfClForRebin;}
      78             :   // Fall back to Vertexer Z
      79          16 :   void SetFallBack(UInt_t th){ fFallBack = kTRUE; fFallBackThreshold = th;}
      80             :   // Get the threshold for fall back. Returns 0 is the fall back is not set.
      81           0 :   UInt_t GetFallBackThreshold() const {return fFallBackThreshold; } 
      82             : protected:
      83             :   AliITSVertexer3D(const AliITSVertexer3D& vtxr);
      84             :   AliITSVertexer3D& operator=(const AliITSVertexer3D& /* vtxr */);
      85             :   Int_t FindTracklets(TTree *itsClusterTree, Int_t optCuts);
      86             :   Int_t Prepare3DVertex(Int_t optCuts);
      87             :   Int_t Prepare3DVertexPbPb();
      88             :   void ResetVert3D();
      89             :   void FindPeaks(TH3F* histo, Double_t *peak, Int_t &nOfTracklets, Int_t &nOfTimes);
      90             :   void PileupFromZ();
      91             :   void MarkUsedClusters();
      92             :   Int_t RemoveTracklets();
      93             :   void  FindOther3DVertices(TTree *itsClusterTree);
      94             :   Double_t GetFraction(Int_t itr) const;
      95             : 
      96             :   enum {kMaxCluPerMod=250};
      97             :   enum {kMaxPileupVertices=10};
      98             :   TClonesArray fLines;      //! array of tracklets
      99             :   AliESDVertex fVert3D;        // 3D Vertex
     100             :   Double_t fCoarseDiffPhiCut; // loose cut on DeltaPhi for RecPoint matching
     101             :   Double_t fFineDiffPhiCut; // tight value of DeltaPhi for RP matching (2nd method) 
     102             :   Double_t fCutOnPairs; //cut on distance between pairs of tracklets 
     103             :   Double_t fCoarseMaxRCut; // cut on tracklet DCA to Z axis
     104             :   Double_t fMaxRCut;     // cut on tracklet DCA to beam axis
     105             :   Double_t fMaxRCut2;    // cut on tracklet DCA to beam axis - algo2
     106             :   Double_t fZCutDiamond;   // cut on +-Z of the diamond
     107             :   Double_t fMaxZCut;   // cut on Z distance from estimated vertex
     108             :   Double_t fDCAcut; // cut on tracklet to tracklet and tracklet to vertex DCA
     109             :   Double_t fDiffPhiMax;     // Maximum delta phi allowed among corr. pixels
     110             :   Double_t fMeanPSelTrk; // GeV, mean P for tracks with dphi<0.01 rad
     111             :   Double_t fMeanPtSelTrk; // GeV, mean Pt for tracks with dphi<0.01 rad
     112             :   TBits   fUsedCluster;  // flag for used clusters in vertex calculation
     113             :   TH1F *fZHisto;           //! histogram with coarse z distribution
     114             :   Double_t  fDCAforPileup;  // Minimum DCA to 1st vertex for pileup tracklets 
     115             :   Double_t  fDiffPhiforPileup;  // Cut on delta phi for pileup 
     116             :   Double_t  fBinSizeR;      // Histo3D bin size along radius
     117             :   Double_t  fBinSizeZ;      // Histo3D bin size along z
     118             :   UShort_t fPileupAlgo;    // Algo for pileup identification
     119             :                            // 0->VertexerZ pileup algo
     120             :                            // 1->Unused RecPoints algo
     121             :   Int_t fMaxNumOfCl;          // max n. of clusters on L1 or L2 for high mult definition
     122             :   Int_t fMaxNumOfClForRebin;  // max n. of clusters on L1 or L2 for rebin
     123             :   Int_t fMaxNumOfClForDownScale;  // max n. of clusters on L1 or L2 for downscale
     124             :   Int_t  fNRecPLay1;       // number of rec ponts on SPD layer 1
     125             :   Int_t  fNRecPLay2;       // number of rec ponts on SPD layer 2
     126             :   Float_t f3DBinSize;           // Size of the 3D bins
     127             :   Bool_t fDoDownScale;     // Control downscaling of tracklets in high mult
     128             :   TRandom3 *fGenerForDownScale; // randomnumber generator fordownscaling
     129             :   Double_t f3DPeak[3];           // TH3F peak coords
     130             :   UChar_t fHighMultAlgo;    // algorithm used for high mult. events
     131             :   Bool_t fSwitchAlgorithm; // Switch between two algoritms in testing phase
     132             :   Bool_t fFallBack;         // Switch to Vertexer Z if true and if the number
     133             :                             // of clusters in SPD0>fFallBackThreshold
     134             :   UInt_t fFallBackThreshold; // threshold on SPD0 clusters 
     135             :   TH3F* fH3d;               //! 3D histogram used to find the vertex
     136             :   TH3F* fH3dcs;             //! 3D histogram used to find the vertex
     137             :   TH3F* fH3dfs;             //! 3D histogram used to find the vertex
     138             :   TH3F* fH3dv;              //! 3D histogram used to find the vertex
     139             : 
     140             : 
     141             :   static const Int_t fgkMaxNumOfClDefault;      // Default max n. of clusters for downscale
     142             :   static const Int_t fgkMaxNumOfClRebinDefault; // Default max n. of clusters for rebin
     143             :   static const Int_t fgkMaxNumOfClDownscaleDefault; // Default max n. of clusters for rebin
     144             :   static const Float_t fgk3DBinSizeDefault;  // Default 3D bins size
     145             : 
     146         470 :   ClassDef(AliITSVertexer3D,16);
     147             : 
     148             : };
     149             : 
     150             : #endif

Generated by: LCOV version 1.11