ROOT logo
#ifndef ALIITSMULTRECONSTRUCTOR_H
#define ALIITSMULTRECONSTRUCTOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//_________________________________________________________________________
// 
//        Implementation of the ITS-SPD trackleter class
//
// It retrieves clusters in the pixels (theta and phi) and finds tracklets.
// These can be used to extract charged particle multiplicity from the ITS.
//
// A tracklet consists of two ITS clusters, one in the first pixel layer and 
// one in the second. The clusters are associated if the differences in 
// Phi (azimuth) and Theta (polar angle) are within fiducial windows.
// In case of multiple candidates the candidate with minimum
// distance is selected. 
//_________________________________________________________________________
#include "AliTrackleter.h"
#include "AliITSsegmentationSPD.h"
#include "TMath.h"

class TBits;
class TTree;
class TH1F;
class TH2F; 
class AliITSDetTypeRec;
class AliITSgeom;
class AliESDEvent;
class AliESDtrack;
class AliVertex;
class AliESDVertex;
class AliMultiplicity;
class AliRefArray;
class AliITSRecPoint;

class AliITSMultReconstructor : public AliTrackleter
{
public:
  //
  enum {kClTh,kClPh,kClZ,kClMC0,kClMC1,kClMC2,kClNPar};
  enum {kTrTheta,kTrPhi,kTrDPhi,kTrDTheta,kTrLab1,kTrLab2,kClID1,kClID2,kTrNPar};
  enum {kSCTh,kSCPh,kSCLab,kSCID,kSCNPar};   
  enum {kITSTPC,kITSSAP,kITSTPCBit=BIT(kITSTPC),kITSSAPBit=BIT(kITSSAP)}; // RS
  AliITSMultReconstructor();
  virtual ~AliITSMultReconstructor();

  void Reconstruct(AliESDEvent* esd, TTree* treeRP);
  void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes=0);   // old reconstructor invocation
  void ReconstructMix(TTree* clusterTree, TTree* clusterTreeMix, const Float_t* vtx, Float_t* vtrRes=0);
  void FindTracklets(const Float_t* vtx); 
  void LoadClusterFiredChips(TTree* tree);
  void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2);
  void FlagTrackClusters(Int_t id);
  void FlagIfSecondary(AliESDtrack* track, const AliVertex* vtx);
  void FlagV0s(const AliESDVertex *vtx);
  void ProcessESDTracks();
  Bool_t  CanBeElectron(const AliESDtrack* trc) const;
  
  virtual void CreateMultiplicityObject();
  //
  // Following members are set via AliITSRecoParam
  void SetPhiWindow(Float_t w=0.08)    {fDPhiWindow=w;   fDPhiWindow2 = w*w;}
  void SetThetaWindow(Float_t w=0.025) {fDThetaWindow=w; fDThetaWindow2=w*w;}
  void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;}
  void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
  void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
  void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
  void SetPhiRotationAngle(Float_t w=0.0) {fPhiRotationAngle=w;}

  Int_t GetNClustersLayer1() const {return fNClustersLay[0];}
  Int_t GetNClustersLayer2() const {return fNClustersLay[1];}
  Int_t GetNClustersLayer(Int_t i) const {return fNClustersLay[i];}
  Int_t GetNTracklets() const {return fNTracklets;}
  Int_t GetNSingleClusters() const {return fNSingleCluster;}
  Int_t GetNSingleClustersLr(int lr) const {return lr==0 ? fNSingleCluster-fNSingleClusterSPD2:(GetStoreSPD2SingleCl() ? fNSingleClusterSPD2 : -1) ;}
  Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];}

  Float_t* GetClusterLayer1(Int_t n) const {return &fClustersLay[0][n*kClNPar];}
  Float_t* GetClusterLayer2(Int_t n) const {return &fClustersLay[1][n*kClNPar];}
  Float_t* GetClusterOfLayer(Int_t lr,Int_t n) const {return &fClustersLay[lr][n*kClNPar];}
  Int_t    GetClusterCopyIndex(Int_t lr,Int_t n) const {return fClusterCopyIndex[lr] ? fClusterCopyIndex[lr][n] : -1;}
  AliITSRecPoint* GetRecPoint(Int_t lr, Int_t n) const;
  
  Float_t* GetTracklet(Int_t n) const {return fTracklets[n];}
  Float_t* GetCluster(Int_t n) const {return fSClusters[n];}

  void     SetScaleDThetaBySin2T(Bool_t v=kTRUE)         {fScaleDTBySin2T = v;}
  Bool_t   GetScaleDThetaBySin2T()               const   {return fScaleDTBySin2T;}
  //
  void     SetNStdDev(Float_t f=1.)                      {fNStdDev = f<0.01 ? 0.01 : f; fNStdDevSq=TMath::Sqrt(fNStdDev);}
  Float_t  GetNStdDev()                          const   {return fNStdDev;}
  //
  void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
  void SaveHists();
  //
  void   SetBuildRefs(Bool_t v=kTRUE)                    {fBuildRefs = v;}
  Bool_t GetBuildRefs()                          const   {return fBuildRefs;}
  //
  void   SetStoreSPD2SingleCl(Bool_t v)                  {fStoreSPD2SingleCl = v;}
  Bool_t GetStoreSPD2SingleCl()                  const   {return fStoreSPD2SingleCl;}
  //
  AliITSDetTypeRec *GetDetTypeRec() const {return fDetTypeRec;}
  void SetDetTypeRec(AliITSDetTypeRec *ptr){fDetTypeRec = ptr;}
  //
  void    SetCutPxDrSPDin(Float_t v=0.1)             { fCutPxDrSPDin = v;}
  void    SetCutPxDrSPDout(Float_t v=0.15)           { fCutPxDrSPDout = v;}
  void    SetCutPxDz(Float_t v=0.2)                  { fCutPxDz = v;}
  void    SetCutDCArz(Float_t v=0.5)                 { fCutDCArz = v;}
  void    SetCutMinElectronProbTPC(Float_t v=0.5)    { fCutMinElectronProbTPC = v;}
  void    SetCutMinElectronProbESD(Float_t v=0.1)    { fCutMinElectronProbESD = v;}
  void    SetCutMinP(Float_t v=0.05)                 { fCutMinP = v;}
  void    SetCutMinRGamma(Float_t v=2.)              { fCutMinRGamma = v;}
  void    SetCutMinRK0(Float_t v=1.)                 { fCutMinRK0 = v;}
  void    SetCutMinPointAngle(Float_t v=0.98)        { fCutMinPointAngle = v;}
  void    SetCutMaxDCADauther(Float_t v=0.5)         { fCutMaxDCADauther = v;}
  void    SetCutMassGamma(Float_t v=0.03)            { fCutMassGamma = v;}
  void    SetCutMassGammaNSigma(Float_t v=5.)        { fCutMassGammaNSigma = v;}
  void    SetCutMassK0(Float_t v=0.03)               { fCutMassK0 = v;}
  void    SetCutMassK0NSigma(Float_t v=5.)           { fCutMassK0NSigma = v;}
  void    SetCutChi2cGamma(Float_t v=2.)             { fCutChi2cGamma = v;}
  void    SetCutChi2cK0(Float_t v=2.)                { fCutChi2cK0 = v;}
  void    SetCutGammaSFromDecay(Float_t v=-10.)      { fCutGammaSFromDecay = v;}
  void    SetCutK0SFromDecay(Float_t v=-10.)         { fCutK0SFromDecay = v;}
  void    SetCutMaxDCA(Float_t v=1.)                 { fCutMaxDCA = v;}
  //
  Float_t GetCutPxDrSPDin()                    const {return fCutPxDrSPDin;}
  Float_t GetCutPxDrSPDout()                   const {return fCutPxDrSPDout;}
  Float_t GetCutPxDz()                         const {return fCutPxDz;}
  Float_t GetCutDCArz()                        const {return fCutDCArz;}
  Float_t GetCutMinElectronProbTPC()           const {return fCutMinElectronProbTPC;}
  Float_t GetCutMinElectronProbESD()           const {return fCutMinElectronProbESD;}
  Float_t GetCutMinP()                         const {return fCutMinP;}
  Float_t GetCutMinRGamma()                    const {return fCutMinRGamma;}
  Float_t GetCutMinRK0()                       const {return fCutMinRK0;}
  Float_t GetCutMinPointAngle()                const {return fCutMinPointAngle;}
  Float_t GetCutMaxDCADauther()                const {return fCutMaxDCADauther;}
  Float_t GetCutMassGamma()                    const {return fCutMassGamma;}
  Float_t GetCutMassGammaNSigma()              const {return fCutMassGammaNSigma;}
  Float_t GetCutMassK0()                       const {return fCutMassK0;}
  Float_t GetCutMassK0NSigma()                 const {return fCutMassK0NSigma;}
  Float_t GetCutChi2cGamma()                   const {return fCutChi2cGamma;}
  Float_t GetCutChi2cK0()                      const {return fCutChi2cK0;}
  Float_t GetCutGammaSFromDecay()              const {return fCutGammaSFromDecay;}
  Float_t GetCutK0SFromDecay()                 const {return fCutK0SFromDecay;}
  Float_t GetCutMaxDCA()                       const {return fCutMaxDCA;}
  //
  void  InitAux();
  void  ClusterPos2Angles(const Float_t *vtx);
  void  ClusterPos2Angles(Float_t *clPar, const Float_t *vtx) const;
  Int_t AssociateClusterOfL1(Int_t iC1);
  Int_t StoreTrackletForL2Cluster(Int_t iC2);
  void  StoreL1Singles();
  TClonesArray* GetClustersOfLayer(Int_t il)   const {return fClArr[il];}
  void  LoadClusters()                               {LoadClusterArrays(fTreeRP);}
  void  SetTreeRP(TTree* rp)                         {fTreeRP    = rp;}
  void  SetTreeRPMix(TTree* rp=0)                    {fTreeRPMix = rp;}
  Bool_t AreClustersLoaded()                   const {return fClustersLoaded;}
  Bool_t GetCreateClustersCopy()               const {return fCreateClustersCopy;}
  Bool_t IsRecoDone()                          const {return fRecoDone;}
  void  SetCreateClustersCopy(Bool_t v=kTRUE)        {fCreateClustersCopy=v;}
  //
  //  Float_t* GetClustersArray(Int_t lr)          const {return (Float_t*) (lr==0) ? fClustersLay[0]:fClustersLay[1];}
  Float_t* GetClustersArray(Int_t lr)          const {if(lr==0){return fClustersLay[0];} 
                                                      else {return fClustersLay[1];}}
  Int_t*   GetPartnersOfL2()                   const {return (Int_t*)fPartners;}
  Float_t* GetMinDistsOfL2()                   const {return (Float_t*)fMinDists;}
  Double_t GetDPhiShift()                      const {return fDPhiShift;}
  Double_t GetDPhiWindow2()                    const {return fDPhiWindow2;}
  Double_t GetDThetaWindow2()                  const {return fDThetaWindow2;}
  Double_t CalcDist(Double_t dphi, Double_t dtheta, Double_t theta) const; 
  //
 protected:
  void   SetClustersLoaded(Bool_t v=kTRUE)           {fClustersLoaded = v;}
  AliITSMultReconstructor(const AliITSMultReconstructor& mr);
  AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
  void              CalcThetaPhi(float dx,float dy,float dz,float &theta,float &phi) const;
  AliITSDetTypeRec* fDetTypeRec;            //! pointer to DetTypeRec
  AliESDEvent*      fESDEvent;              //! pointer to ESD event
  TTree*            fTreeRP;                //! ITS recpoints
  TTree*            fTreeRPMix;             //! ITS recpoints for mixing
  AliRefArray*      fUsedClusLay[2][2];     //! RS: clusters usage in ESD tracks
  //
  Float_t*      fClustersLay[2];            //! clusters in the SPD layers of ITS 
  Int_t*        fDetectorIndexClustersLay[2];  //! module index for clusters in ITS layers
  Int_t*        fClusterCopyIndex[2];         //! when clusters copy is requested, store here the reference on the index
  Bool_t*       fOverlapFlagClustersLay[2];  //! flag for clusters in the overlap regions in ITS layers

  Float_t**     fTracklets;            //! tracklets 
  Float_t**     fSClusters;            //! single clusters (unassociated)
  
  Int_t         fNClustersLay[2];      // Number of clusters on each layer
  Int_t         fNTracklets;           // Number of tracklets
  Int_t         fNSingleCluster;       // Number of unassociated clusters
  Int_t         fNSingleClusterSPD2;   // Number of unassociated clusters on 2nd lr
  Short_t       fNFiredChips[2];       // Number of fired chips in the two SPD layers
  //
  // Following members are set via AliITSRecoParam
  //
  Float_t       fDPhiWindow;                   // Search window in phi
  Float_t       fDThetaWindow;                 // Search window in theta
  Float_t       fPhiShift;                     // Phi shift reference value (at 0.5 T) 
  Bool_t        fRemoveClustersFromOverlaps;   // Option to skip clusters in the overlaps
  Float_t       fPhiOverlapCut;                // Fiducial window in phi for overlap cut
  Float_t       fZetaOverlapCut;               // Fiducial window in eta for overlap cut
  Float_t       fPhiRotationAngle;             // Angle to rotate the inner layer cluster for combinatorial reco only 
  //
  Bool_t        fScaleDTBySin2T;               // use in distance definition
  Float_t       fNStdDev;                      // number of standard deviations to keep
  Float_t       fNStdDevSq;                    // sqrt of number of standard deviations to keep
  //
  // cuts for secondaries identification
  Float_t       fCutPxDrSPDin;                 // max P*DR for primaries involving at least 1 SPD
  Float_t       fCutPxDrSPDout;                // max P*DR for primaries not involving any SPD
  Float_t       fCutPxDz;                      // max P*DZ for primaries
  Float_t       fCutDCArz;                     // max DR or DZ for primares
  //
  // cuts for flagging tracks in V0s
  Float_t       fCutMinElectronProbTPC;     // min probability for e+/e- PID involving TPC
  Float_t       fCutMinElectronProbESD;     // min probability for e+/e- PID not involving TPC
  //
  Float_t       fCutMinP;                   // min P of V0
  Float_t       fCutMinRGamma;              // min transv. distance from ESDVertex to V0 for gammas
  Float_t       fCutMinRK0;                 // min transv. distance from ESDVertex to V0 for K0s
  Float_t       fCutMinPointAngle;          // min pointing angle cosine
  Float_t       fCutMaxDCADauther;          // max DCA of daughters at V0
  Float_t       fCutMassGamma;              // max gamma mass
  Float_t       fCutMassGammaNSigma;        // max standard deviations from 0 for gamma
  Float_t       fCutMassK0;                 // max K0 mass difference from PGD value
  Float_t       fCutMassK0NSigma;           // max standard deviations for K0 mass from PDG value
  Float_t       fCutChi2cGamma;             // max constrained chi2 cut for gammas
  Float_t       fCutChi2cK0;                // max constrained chi2 cut for K0s
  Float_t       fCutGammaSFromDecay;        // min path*P for gammas
  Float_t       fCutK0SFromDecay;           // min path*P for K0s
  Float_t       fCutMaxDCA;                 // max DCA for V0 at ESD vertex  

  Bool_t        fHistOn;               // Option to define and fill the histograms 

  TH1F*         fhClustersDPhiAcc;     // Phi2 - Phi1 for tracklets 
  TH1F*         fhClustersDThetaAcc;   // Theta2 - Theta1 for tracklets 
  TH1F*         fhClustersDPhiAll;     // Phi2 - Phi1 all the combinations 
  TH1F*         fhClustersDThetaAll;   // Theta2 - Theta1 all the combinations
 
  TH2F*         fhDPhiVsDThetaAll;     // 2D plot for all the combinations  
  TH2F*         fhDPhiVsDThetaAcc;     // same plot for tracklets 

  TH1F*         fhetaTracklets;        // Pseudorapidity distr. for tracklets 
  TH1F*         fhphiTracklets;        // Azimuthal (Phi) distr. for tracklets  
  TH1F*         fhetaClustersLay1;     // Pseudorapidity distr. for Clusters L. 1
  TH1F*         fhphiClustersLay1;     // Azimuthal (Phi) distr. for Clusters L. 1 

  // temporary stuff for single event trackleting
  Double_t      fDPhiShift;            // shift in dphi due to the curvature
  Double_t      fDPhiWindow2;          // phi window^2
  Double_t      fDThetaWindow2;        // theta window^2
  Int_t*        fPartners;             //! L2 partners of L1
  Int_t*        fAssociatedLay1;       //! association flag
  Float_t*      fMinDists;             //! smallest distances for L2->L1
  AliRefArray*  fBlackList;            //! blacklisted cluster references
  Bool_t        fStoreRefs[2][2];      //! which cluster to track refs to store
  //
  // this is for the analysis mode only
  TClonesArray  *fClArr[2];            //! original clusters
  Bool_t        fCreateClustersCopy;   //  read and clone clusters directly from the tree
  Bool_t        fClustersLoaded;       // flag of clusters loaded
  Bool_t        fRecoDone;             // flag that reconstruction is done
  Bool_t        fBuildRefs;            // build cluster to tracks references
  Bool_t        fStoreSPD2SingleCl;    // do we store SPD2 singles
  //
  AliITSsegmentationSPD fSPDSeg;       // SPD segmentation model
  //
  void LoadClusterArrays(TTree* tree, TTree* treeMix=0);
  void LoadClusterArrays(TTree* tree,int il);

  ClassDef(AliITSMultReconstructor,11)
};

//____________________________________________________________________
inline void AliITSMultReconstructor::ClusterPos2Angles(Float_t *clPar, const Float_t *vtx) const
{
  // convert cluster coordinates to angles wrt vertex
  Float_t x = clPar[kClTh] - vtx[0];
  Float_t y = clPar[kClPh] - vtx[1];
  Float_t z = clPar[kClZ]  - vtx[2];
  Float_t r    = TMath::Sqrt(x*x + y*y + z*z);
  clPar[kClTh] = TMath::ACos(z/r);                   // Store Theta
  clPar[kClPh] = TMath::Pi() + TMath::ATan2(-y,-x);  // Store Phi 
  //
}

//____________________________________________________________________
inline Double_t AliITSMultReconstructor::CalcDist(Double_t dphi, Double_t dtheta, Double_t theta) const
{
  // calculate eliptical distance. theta is the angle of cl1, dtheta = tht(cl1)-tht(cl2)
  dphi = TMath::Abs(dphi) - fDPhiShift;
  if (fScaleDTBySin2T) {
    double sinTI = TMath::Sin(theta-dtheta/2);
    sinTI *= sinTI;
    dtheta /= sinTI>1.e-6 ? sinTI : 1.e-6;
  }
  return dphi*dphi/fDPhiWindow2 + dtheta*dtheta/fDThetaWindow2;
}

//____________________________________________________________________
inline void AliITSMultReconstructor::CalcThetaPhi(float x, float y,float z,float &theta,float &phi) const
{
  // get theta and phi in tracklet convention
  theta = TMath::ACos(z/TMath::Sqrt(x*x + y*y + z*z));
  phi   = TMath::Pi() + TMath::ATan2(-y,-x);
}


#endif
 AliITSMultReconstructor.h:1
 AliITSMultReconstructor.h:2
 AliITSMultReconstructor.h:3
 AliITSMultReconstructor.h:4
 AliITSMultReconstructor.h:5
 AliITSMultReconstructor.h:6
 AliITSMultReconstructor.h:7
 AliITSMultReconstructor.h:8
 AliITSMultReconstructor.h:9
 AliITSMultReconstructor.h:10
 AliITSMultReconstructor.h:11
 AliITSMultReconstructor.h:12
 AliITSMultReconstructor.h:13
 AliITSMultReconstructor.h:14
 AliITSMultReconstructor.h:15
 AliITSMultReconstructor.h:16
 AliITSMultReconstructor.h:17
 AliITSMultReconstructor.h:18
 AliITSMultReconstructor.h:19
 AliITSMultReconstructor.h:20
 AliITSMultReconstructor.h:21
 AliITSMultReconstructor.h:22
 AliITSMultReconstructor.h:23
 AliITSMultReconstructor.h:24
 AliITSMultReconstructor.h:25
 AliITSMultReconstructor.h:26
 AliITSMultReconstructor.h:27
 AliITSMultReconstructor.h:28
 AliITSMultReconstructor.h:29
 AliITSMultReconstructor.h:30
 AliITSMultReconstructor.h:31
 AliITSMultReconstructor.h:32
 AliITSMultReconstructor.h:33
 AliITSMultReconstructor.h:34
 AliITSMultReconstructor.h:35
 AliITSMultReconstructor.h:36
 AliITSMultReconstructor.h:37
 AliITSMultReconstructor.h:38
 AliITSMultReconstructor.h:39
 AliITSMultReconstructor.h:40
 AliITSMultReconstructor.h:41
 AliITSMultReconstructor.h:42
 AliITSMultReconstructor.h:43
 AliITSMultReconstructor.h:44
 AliITSMultReconstructor.h:45
 AliITSMultReconstructor.h:46
 AliITSMultReconstructor.h:47
 AliITSMultReconstructor.h:48
 AliITSMultReconstructor.h:49
 AliITSMultReconstructor.h:50
 AliITSMultReconstructor.h:51
 AliITSMultReconstructor.h:52
 AliITSMultReconstructor.h:53
 AliITSMultReconstructor.h:54
 AliITSMultReconstructor.h:55
 AliITSMultReconstructor.h:56
 AliITSMultReconstructor.h:57
 AliITSMultReconstructor.h:58
 AliITSMultReconstructor.h:59
 AliITSMultReconstructor.h:60
 AliITSMultReconstructor.h:61
 AliITSMultReconstructor.h:62
 AliITSMultReconstructor.h:63
 AliITSMultReconstructor.h:64
 AliITSMultReconstructor.h:65
 AliITSMultReconstructor.h:66
 AliITSMultReconstructor.h:67
 AliITSMultReconstructor.h:68
 AliITSMultReconstructor.h:69
 AliITSMultReconstructor.h:70
 AliITSMultReconstructor.h:71
 AliITSMultReconstructor.h:72
 AliITSMultReconstructor.h:73
 AliITSMultReconstructor.h:74
 AliITSMultReconstructor.h:75
 AliITSMultReconstructor.h:76
 AliITSMultReconstructor.h:77
 AliITSMultReconstructor.h:78
 AliITSMultReconstructor.h:79
 AliITSMultReconstructor.h:80
 AliITSMultReconstructor.h:81
 AliITSMultReconstructor.h:82
 AliITSMultReconstructor.h:83
 AliITSMultReconstructor.h:84
 AliITSMultReconstructor.h:85
 AliITSMultReconstructor.h:86
 AliITSMultReconstructor.h:87
 AliITSMultReconstructor.h:88
 AliITSMultReconstructor.h:89
 AliITSMultReconstructor.h:90
 AliITSMultReconstructor.h:91
 AliITSMultReconstructor.h:92
 AliITSMultReconstructor.h:93
 AliITSMultReconstructor.h:94
 AliITSMultReconstructor.h:95
 AliITSMultReconstructor.h:96
 AliITSMultReconstructor.h:97
 AliITSMultReconstructor.h:98
 AliITSMultReconstructor.h:99
 AliITSMultReconstructor.h:100
 AliITSMultReconstructor.h:101
 AliITSMultReconstructor.h:102
 AliITSMultReconstructor.h:103
 AliITSMultReconstructor.h:104
 AliITSMultReconstructor.h:105
 AliITSMultReconstructor.h:106
 AliITSMultReconstructor.h:107
 AliITSMultReconstructor.h:108
 AliITSMultReconstructor.h:109
 AliITSMultReconstructor.h:110
 AliITSMultReconstructor.h:111
 AliITSMultReconstructor.h:112
 AliITSMultReconstructor.h:113
 AliITSMultReconstructor.h:114
 AliITSMultReconstructor.h:115
 AliITSMultReconstructor.h:116
 AliITSMultReconstructor.h:117
 AliITSMultReconstructor.h:118
 AliITSMultReconstructor.h:119
 AliITSMultReconstructor.h:120
 AliITSMultReconstructor.h:121
 AliITSMultReconstructor.h:122
 AliITSMultReconstructor.h:123
 AliITSMultReconstructor.h:124
 AliITSMultReconstructor.h:125
 AliITSMultReconstructor.h:126
 AliITSMultReconstructor.h:127
 AliITSMultReconstructor.h:128
 AliITSMultReconstructor.h:129
 AliITSMultReconstructor.h:130
 AliITSMultReconstructor.h:131
 AliITSMultReconstructor.h:132
 AliITSMultReconstructor.h:133
 AliITSMultReconstructor.h:134
 AliITSMultReconstructor.h:135
 AliITSMultReconstructor.h:136
 AliITSMultReconstructor.h:137
 AliITSMultReconstructor.h:138
 AliITSMultReconstructor.h:139
 AliITSMultReconstructor.h:140
 AliITSMultReconstructor.h:141
 AliITSMultReconstructor.h:142
 AliITSMultReconstructor.h:143
 AliITSMultReconstructor.h:144
 AliITSMultReconstructor.h:145
 AliITSMultReconstructor.h:146
 AliITSMultReconstructor.h:147
 AliITSMultReconstructor.h:148
 AliITSMultReconstructor.h:149
 AliITSMultReconstructor.h:150
 AliITSMultReconstructor.h:151
 AliITSMultReconstructor.h:152
 AliITSMultReconstructor.h:153
 AliITSMultReconstructor.h:154
 AliITSMultReconstructor.h:155
 AliITSMultReconstructor.h:156
 AliITSMultReconstructor.h:157
 AliITSMultReconstructor.h:158
 AliITSMultReconstructor.h:159
 AliITSMultReconstructor.h:160
 AliITSMultReconstructor.h:161
 AliITSMultReconstructor.h:162
 AliITSMultReconstructor.h:163
 AliITSMultReconstructor.h:164
 AliITSMultReconstructor.h:165
 AliITSMultReconstructor.h:166
 AliITSMultReconstructor.h:167
 AliITSMultReconstructor.h:168
 AliITSMultReconstructor.h:169
 AliITSMultReconstructor.h:170
 AliITSMultReconstructor.h:171
 AliITSMultReconstructor.h:172
 AliITSMultReconstructor.h:173
 AliITSMultReconstructor.h:174
 AliITSMultReconstructor.h:175
 AliITSMultReconstructor.h:176
 AliITSMultReconstructor.h:177
 AliITSMultReconstructor.h:178
 AliITSMultReconstructor.h:179
 AliITSMultReconstructor.h:180
 AliITSMultReconstructor.h:181
 AliITSMultReconstructor.h:182
 AliITSMultReconstructor.h:183
 AliITSMultReconstructor.h:184
 AliITSMultReconstructor.h:185
 AliITSMultReconstructor.h:186
 AliITSMultReconstructor.h:187
 AliITSMultReconstructor.h:188
 AliITSMultReconstructor.h:189
 AliITSMultReconstructor.h:190
 AliITSMultReconstructor.h:191
 AliITSMultReconstructor.h:192
 AliITSMultReconstructor.h:193
 AliITSMultReconstructor.h:194
 AliITSMultReconstructor.h:195
 AliITSMultReconstructor.h:196
 AliITSMultReconstructor.h:197
 AliITSMultReconstructor.h:198
 AliITSMultReconstructor.h:199
 AliITSMultReconstructor.h:200
 AliITSMultReconstructor.h:201
 AliITSMultReconstructor.h:202
 AliITSMultReconstructor.h:203
 AliITSMultReconstructor.h:204
 AliITSMultReconstructor.h:205
 AliITSMultReconstructor.h:206
 AliITSMultReconstructor.h:207
 AliITSMultReconstructor.h:208
 AliITSMultReconstructor.h:209
 AliITSMultReconstructor.h:210
 AliITSMultReconstructor.h:211
 AliITSMultReconstructor.h:212
 AliITSMultReconstructor.h:213
 AliITSMultReconstructor.h:214
 AliITSMultReconstructor.h:215
 AliITSMultReconstructor.h:216
 AliITSMultReconstructor.h:217
 AliITSMultReconstructor.h:218
 AliITSMultReconstructor.h:219
 AliITSMultReconstructor.h:220
 AliITSMultReconstructor.h:221
 AliITSMultReconstructor.h:222
 AliITSMultReconstructor.h:223
 AliITSMultReconstructor.h:224
 AliITSMultReconstructor.h:225
 AliITSMultReconstructor.h:226
 AliITSMultReconstructor.h:227
 AliITSMultReconstructor.h:228
 AliITSMultReconstructor.h:229
 AliITSMultReconstructor.h:230
 AliITSMultReconstructor.h:231
 AliITSMultReconstructor.h:232
 AliITSMultReconstructor.h:233
 AliITSMultReconstructor.h:234
 AliITSMultReconstructor.h:235
 AliITSMultReconstructor.h:236
 AliITSMultReconstructor.h:237
 AliITSMultReconstructor.h:238
 AliITSMultReconstructor.h:239
 AliITSMultReconstructor.h:240
 AliITSMultReconstructor.h:241
 AliITSMultReconstructor.h:242
 AliITSMultReconstructor.h:243
 AliITSMultReconstructor.h:244
 AliITSMultReconstructor.h:245
 AliITSMultReconstructor.h:246
 AliITSMultReconstructor.h:247
 AliITSMultReconstructor.h:248
 AliITSMultReconstructor.h:249
 AliITSMultReconstructor.h:250
 AliITSMultReconstructor.h:251
 AliITSMultReconstructor.h:252
 AliITSMultReconstructor.h:253
 AliITSMultReconstructor.h:254
 AliITSMultReconstructor.h:255
 AliITSMultReconstructor.h:256
 AliITSMultReconstructor.h:257
 AliITSMultReconstructor.h:258
 AliITSMultReconstructor.h:259
 AliITSMultReconstructor.h:260
 AliITSMultReconstructor.h:261
 AliITSMultReconstructor.h:262
 AliITSMultReconstructor.h:263
 AliITSMultReconstructor.h:264
 AliITSMultReconstructor.h:265
 AliITSMultReconstructor.h:266
 AliITSMultReconstructor.h:267
 AliITSMultReconstructor.h:268
 AliITSMultReconstructor.h:269
 AliITSMultReconstructor.h:270
 AliITSMultReconstructor.h:271
 AliITSMultReconstructor.h:272
 AliITSMultReconstructor.h:273
 AliITSMultReconstructor.h:274
 AliITSMultReconstructor.h:275
 AliITSMultReconstructor.h:276
 AliITSMultReconstructor.h:277
 AliITSMultReconstructor.h:278
 AliITSMultReconstructor.h:279
 AliITSMultReconstructor.h:280
 AliITSMultReconstructor.h:281
 AliITSMultReconstructor.h:282
 AliITSMultReconstructor.h:283
 AliITSMultReconstructor.h:284
 AliITSMultReconstructor.h:285
 AliITSMultReconstructor.h:286
 AliITSMultReconstructor.h:287
 AliITSMultReconstructor.h:288
 AliITSMultReconstructor.h:289
 AliITSMultReconstructor.h:290
 AliITSMultReconstructor.h:291
 AliITSMultReconstructor.h:292
 AliITSMultReconstructor.h:293
 AliITSMultReconstructor.h:294
 AliITSMultReconstructor.h:295
 AliITSMultReconstructor.h:296
 AliITSMultReconstructor.h:297
 AliITSMultReconstructor.h:298
 AliITSMultReconstructor.h:299
 AliITSMultReconstructor.h:300
 AliITSMultReconstructor.h:301
 AliITSMultReconstructor.h:302
 AliITSMultReconstructor.h:303
 AliITSMultReconstructor.h:304
 AliITSMultReconstructor.h:305
 AliITSMultReconstructor.h:306
 AliITSMultReconstructor.h:307
 AliITSMultReconstructor.h:308
 AliITSMultReconstructor.h:309
 AliITSMultReconstructor.h:310
 AliITSMultReconstructor.h:311
 AliITSMultReconstructor.h:312
 AliITSMultReconstructor.h:313