ROOT logo
#ifndef ALITRACKCOMPARISON_H
#define ALITRACKCOMPARISON_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
//-------------------------------------------------------------------
// Base class to test the extrapolation performance from TPC to outer 
// detectors. Several member functions AddTracks() with different
// arguments can be called to execute extrapolation and several 
// THnSparse are filled with residuls and basic track information
//
// Anthor: R.Ma, M.Ivanov 02/04/2011
//--------------------------------------------------------------------

#include "TNamed.h"
#include "TMatrixDfwd.h"
class THnSparse;
class TCollection;
class AliExternalTrackParam;
class AliTrackPointArray;
class AliTrackPoint;
class TParticle;
class AliTrackReference;
class TObjArray;
class TTreeSRedirector;
 
class AliTrackComparison:public TNamed {
public:
  AliTrackComparison();
  AliTrackComparison(const Text_t *name, const Text_t *title);
  AliTrackComparison(const AliTrackComparison& comp);
  AliTrackComparison& operator=(const AliTrackComparison& comp);
  virtual ~AliTrackComparison();
  //Make histograms
  void Init();

  //Main process functions  
  Int_t AddTracks(AliExternalTrackParam *param0,  AliExternalTrackParam *param1, Double_t mass);
  Int_t AddTracks(AliTrackReference *ref0,  AliTrackReference *ref1, Double_t mass, Int_t charge);
  Int_t AddTracks(AliExternalTrackParam *param0,  AliTrackPoint *point1, Double_t mass, Double_t energy, Double_t *vxyz);
  AliExternalTrackParam *MakeTrack(const AliTrackReference *ref, Int_t charge);
  Bool_t PropagateToPoint(AliExternalTrackParam *param0,AliExternalTrackParam *param1, Double_t mass);
  
  //Set the step used in extrapolatoin
  void SetStep(Double_t step){fStep=step;}

  //Set the range of the first bins of the THnSparse
  void SetRangeDY(Double_t lowBinDY, Double_t upBinDY) {fLowBinDY=lowBinDY,fUpBinDY=upBinDY;}
  void SetRangeDZ(Double_t lowBinDZ, Double_t upBinDZ) {fLowBinDZ=lowBinDZ,fUpBinDZ=upBinDZ;}
  void SetRangeDSnp(Double_t lowBinDSnp, Double_t upBinDSnp){fLowBinDSnp=lowBinDSnp;fUpBinDSnp=upBinDSnp;}
  void SetRangeDTheta(Double_t lowBinDTheta, Double_t upBinDTheta) {fLowBinDTheta=lowBinDTheta;fUpBinDTheta=upBinDTheta;}
  void SetRange1Pt(Double_t lowBin1Pt, Double_t upBin1Pt) {fLowBin1Pt=lowBin1Pt;fUpBin1Pt=upBin1Pt;}
  void SetRange1PtLoss(Double_t lowBin1PtLoss, Double_t upBin1PtLoss) {fLowBin1PtLoss=lowBin1PtLoss;fUpBin1PtLoss=upBin1PtLoss;}


  //Set number of bins 
  void SetNBins(Int_t nBinsDY, Int_t nBinsDZ, Int_t nBinsDSnp, Int_t nBinsDTheta, Int_t nBins1Pt, Int_t nBins1PtLoss)
  {
    fNBinsDY=nBinsDY;
    fNBinsDZ=nBinsDZ;
    fNBinsDSnp=nBinsDSnp;
    fNBinsDTheta=nBinsDTheta;
    fNBins1Pt=nBins1Pt;
    fNBins1PtLoss=nBins1PtLoss;
  }


  //Set the layer ID of the detectors. Refer to AliGeomManager.h
  void SetLayerID(Double_t layerID) {fLayerID=layerID;}

  //Set the flag to fill all the THnSparse's. By default it is kTURE
  void SetFillAll(Bool_t fillAll) {fFillAll=fillAll;}
  
  //Fill the THnSparse
  void FillHistos(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t tr1Pt);

  //Getter
  THnSparse *GetHnSparse(Int_t index) {return fResolHisto[index];}

  //Used to redirect the output THnSparse into TTreeSRedirector
  void MakeDistortionMap(Double_t refX, Int_t type);

  //Set number of bins used to combine statistics
  void SetNCombineBin(Int_t nCombineBin) {fNCombineBin=nCombineBin;}

  virtual Long64_t       Merge(TCollection *const li);
  virtual void           Add(AliTrackComparison *const comp);
  void Analyze(); //Not implemented

protected:
  void    MakeHistos();     //Initialize all the THnSparse
  Double_t fStep;           //Step used in extrapolation
  Double_t fLowBinDY;       //First bin of residual in Y
  Double_t fUpBinDY;        //Last bin of residual in Y
  Double_t fLowBinDZ;       //First bin of residual in Z
  Double_t fUpBinDZ;        //Last bin of residual in Z
  Double_t fLowBinDSnp;     //First bin of residual in sin(phi)
  Double_t fUpBinDSnp;      //Last bin of residual in sin(phi) 
  Double_t fLowBinDTheta;   //First bin of residual in Theta
  Double_t fUpBinDTheta;    //Last bin of residual in Theta
  Double_t fLowBin1Pt;      //First bin of residual in 1/pT
  Double_t fUpBin1Pt;       //Last bin of residual in 1/pT
  Double_t fLowBin1PtLoss;  //First bin of corrected energy loss
  Double_t fUpBin1PtLoss;   //Last bin of corrected energy loss
  Int_t fNBinsDY;           //NBins of residual in Y
  Int_t fNBinsDZ;           //NBins of residual in Z
  Int_t fNBinsDSnp;         //NBins of residual in sin(phi)
  Int_t fNBinsDTheta;       //NBins of residual in Theta
  Int_t fNBins1Pt;          //NBins of residual in 1/pT
  Int_t fNBins1PtLoss;      //NBins of corrected energy loss
  Double_t fLayerID;        //Detector layer ID
  Bool_t fFillAll;          //Flag to fill all the THnSparse
  Int_t fNCombineBin;       //Number of bins used to combine statistics in MakeDistortionMap()

  THnSparse *fResolHisto[6];//Output THnSparse

  ClassDef(AliTrackComparison, 4); 
};

#endif


 AliTrackComparison.h:1
 AliTrackComparison.h:2
 AliTrackComparison.h:3
 AliTrackComparison.h:4
 AliTrackComparison.h:5
 AliTrackComparison.h:6
 AliTrackComparison.h:7
 AliTrackComparison.h:8
 AliTrackComparison.h:9
 AliTrackComparison.h:10
 AliTrackComparison.h:11
 AliTrackComparison.h:12
 AliTrackComparison.h:13
 AliTrackComparison.h:14
 AliTrackComparison.h:15
 AliTrackComparison.h:16
 AliTrackComparison.h:17
 AliTrackComparison.h:18
 AliTrackComparison.h:19
 AliTrackComparison.h:20
 AliTrackComparison.h:21
 AliTrackComparison.h:22
 AliTrackComparison.h:23
 AliTrackComparison.h:24
 AliTrackComparison.h:25
 AliTrackComparison.h:26
 AliTrackComparison.h:27
 AliTrackComparison.h:28
 AliTrackComparison.h:29
 AliTrackComparison.h:30
 AliTrackComparison.h:31
 AliTrackComparison.h:32
 AliTrackComparison.h:33
 AliTrackComparison.h:34
 AliTrackComparison.h:35
 AliTrackComparison.h:36
 AliTrackComparison.h:37
 AliTrackComparison.h:38
 AliTrackComparison.h:39
 AliTrackComparison.h:40
 AliTrackComparison.h:41
 AliTrackComparison.h:42
 AliTrackComparison.h:43
 AliTrackComparison.h:44
 AliTrackComparison.h:45
 AliTrackComparison.h:46
 AliTrackComparison.h:47
 AliTrackComparison.h:48
 AliTrackComparison.h:49
 AliTrackComparison.h:50
 AliTrackComparison.h:51
 AliTrackComparison.h:52
 AliTrackComparison.h:53
 AliTrackComparison.h:54
 AliTrackComparison.h:55
 AliTrackComparison.h:56
 AliTrackComparison.h:57
 AliTrackComparison.h:58
 AliTrackComparison.h:59
 AliTrackComparison.h:60
 AliTrackComparison.h:61
 AliTrackComparison.h:62
 AliTrackComparison.h:63
 AliTrackComparison.h:64
 AliTrackComparison.h:65
 AliTrackComparison.h:66
 AliTrackComparison.h:67
 AliTrackComparison.h:68
 AliTrackComparison.h:69
 AliTrackComparison.h:70
 AliTrackComparison.h:71
 AliTrackComparison.h:72
 AliTrackComparison.h:73
 AliTrackComparison.h:74
 AliTrackComparison.h:75
 AliTrackComparison.h:76
 AliTrackComparison.h:77
 AliTrackComparison.h:78
 AliTrackComparison.h:79
 AliTrackComparison.h:80
 AliTrackComparison.h:81
 AliTrackComparison.h:82
 AliTrackComparison.h:83
 AliTrackComparison.h:84
 AliTrackComparison.h:85
 AliTrackComparison.h:86
 AliTrackComparison.h:87
 AliTrackComparison.h:88
 AliTrackComparison.h:89
 AliTrackComparison.h:90
 AliTrackComparison.h:91
 AliTrackComparison.h:92
 AliTrackComparison.h:93
 AliTrackComparison.h:94
 AliTrackComparison.h:95
 AliTrackComparison.h:96
 AliTrackComparison.h:97
 AliTrackComparison.h:98
 AliTrackComparison.h:99
 AliTrackComparison.h:100
 AliTrackComparison.h:101
 AliTrackComparison.h:102
 AliTrackComparison.h:103
 AliTrackComparison.h:104
 AliTrackComparison.h:105
 AliTrackComparison.h:106
 AliTrackComparison.h:107
 AliTrackComparison.h:108
 AliTrackComparison.h:109
 AliTrackComparison.h:110
 AliTrackComparison.h:111
 AliTrackComparison.h:112
 AliTrackComparison.h:113
 AliTrackComparison.h:114
 AliTrackComparison.h:115
 AliTrackComparison.h:116
 AliTrackComparison.h:117
 AliTrackComparison.h:118
 AliTrackComparison.h:119
 AliTrackComparison.h:120
 AliTrackComparison.h:121
 AliTrackComparison.h:122