X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCcalibTracksGain.h;h=60b1cbc8eab9cb8f5df96e5339dfa9ca29d34870;hb=d61f56dfd45b8e206ed12c1002ed22115edc568c;hp=e80a8335b8ca3f28e637d93147b6b012a6a74ac7;hpb=10757ee9226dad26cb3b3f26602615a3cbc31767;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibTracksGain.h b/TPC/AliTPCcalibTracksGain.h index e80a8335b8c..60b1cbc8eab 100644 --- a/TPC/AliTPCcalibTracksGain.h +++ b/TPC/AliTPCcalibTracksGain.h @@ -19,8 +19,11 @@ using namespace std; class TTreeSRedirector; -class TH3F; +class TObjString; class TLinearFitter; +class TProfile; +class TProfile2D; +class TH1F; class AliTPCClusterParam; class AliTPCParamSR; @@ -32,7 +35,6 @@ class AliTrackPointArray; class TTreeStream; class AliTPCcalibTracksCuts; class AliTPCFitPad; -class TObjString; class AliTPCcalibTracksGain : public TNamed { public: @@ -47,58 +49,106 @@ public: kLogFitter = 2 }; - AliTPCcalibTracksGain(); - AliTPCcalibTracksGain(const AliTPCcalibTracksGain& obj); - AliTPCcalibTracksGain(const char* name, const char* title, AliTPCcalibTracksCuts* cuts, TNamed* debugStreamPrefix = 0, AliTPCcalibTracksGain* prevIter = 0); - virtual ~AliTPCcalibTracksGain(); - AliTPCcalibTracksGain& operator=(const AliTPCcalibTracksGain& rhs); - - static void AddInfo(TChain* chain, char* debugStreamPrefix = 0, char* prevIterFileName = 0); - Bool_t AcceptTrack(AliTPCseed* track); - void Terminate(); - void Add(AliTPCcalibTracksGain* cal); - void AddTrack(AliTPCseed* seed); - void AddCluster(AliTPCclusterMI* cluster, Float_t momenta, Float_t mdedx, Int_t padType, Float_t xcenter, TVectorD dedxQ, TVectorD dedxM, Float_t fraction, Float_t fraction2, Float_t dedge, TVectorD parY, TVectorD parZ, TVectorD meanPos); - void Process(AliTPCseed* seed); - Long64_t Merge(TCollection *list); - void Evaluate(Bool_t robust = kFALSE, Double_t frac = -1.); - void GetParameters(UInt_t segment, UInt_t padType, UInt_t fitType, TVectorD &fitParam); - void GetErrors(UInt_t segment, UInt_t padType, UInt_t fitType, TVectorD &fitError); - Double_t GetRedChi2(UInt_t segment, UInt_t padType, UInt_t fitType); - void GetCovarianceMatrix(UInt_t segment, UInt_t padType, UInt_t fitType, TMatrixD& covMatrix); - AliTPCCalPad* CreateFitCalPad(UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); - AliTPCCalROC* CreateFitCalROC(UInt_t sector, UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); - AliTPCCalROC* CreateFitCalROC(UInt_t sector, UInt_t padType, TVectorD &fitParam, UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); - AliTPCCalROC* CreateCombinedCalROC(const AliTPCCalROC* roc1, const AliTPCCalROC* roc2); - TLinearFitter* GetFitter(UInt_t segment, UInt_t padType, UInt_t fitType); - static Double_t GetPadLength(Double_t lx); - static Int_t GetPadType(Double_t lx); - void DumpTrack(AliTPCseed* track); - Bool_t GetDedx(AliTPCseed* track, Int_t padType, Int_t* rows); - - static Bool_t GetRowPad(Double_t lx, Double_t ly, Int_t& row, Int_t& pad); // just for debugging -protected: + AliTPCcalibTracksGain(); + AliTPCcalibTracksGain(const AliTPCcalibTracksGain& obj); + AliTPCcalibTracksGain(const char* name, const char* title, AliTPCcalibTracksCuts* cuts, TNamed* debugStreamPrefix = 0, AliTPCcalibTracksGain* prevIter = 0); + virtual ~AliTPCcalibTracksGain(); + AliTPCcalibTracksGain& operator=(const AliTPCcalibTracksGain& rhs); + static void AddInfo(TChain* chain, char* debugStreamPrefix = 0, char* prevIterFileName = 0); + void Terminate(); + // + // Tracks manipulation + // + void Process(AliTPCseed* seed); + void AddTrack(AliTPCseed* seed); + Bool_t AcceptTrack(AliTPCseed* track); + void DumpTrack(AliTPCseed* track); + Bool_t GetDedx(AliTPCseed* track, Int_t padType, Int_t*rows, + Int_t §or, Int_t& npoints, + TVectorD &dedxM, TVectorD &dedxQ, + TVectorD &parY, TVectorD &parZ, TVectorD & meanPos); + void AddCluster(AliTPCclusterMI* cluster, Float_t momenta, Float_t mdedx, Int_t padType, Float_t xcenter, TVectorD &dedxQ, TVectorD & dedxM, Float_t fraction, Float_t fraction2, Float_t dedge, TVectorD& parY, TVectorD& parZ, TVectorD& meanPos); + void AddTracklet(UInt_t sector, UInt_t padType,TVectorD &dedxQ, TVectorD &dedxM,TVectorD& parY, TVectorD& parZ, TVectorD& meanPos); - UInt_t fTotalTracks; // just for debugging - UInt_t fAcceptedTracks; // just for debugging - AliTPCCalPad* fDebugCalPadRaw; // just for debugging - AliTPCCalPad* fDebugCalPadCorr; // just for debugging - - TTreeSRedirector* fDebugStream; //! debug stream for debugging - - AliTPCFitPad* fSimpleFitter; // simple fitter for short pads - AliTPCFitPad* fSqrtFitter; // sqrt fitter for medium pads - AliTPCFitPad* fLogFitter; // log fitter for long pads - AliTPCFitPad* fSingleSectorFitter; // just for debugging - - AliTPCcalibTracksGain* fPrevIter; // the calibration object in its previous iteration (will not be owned by the new object, don't forget to delete it!) - - UInt_t fNShortClusters[36]; // number of clusters registered on short pads - UInt_t fNMediumClusters[36]; // number of clusters registered on medium pads - UInt_t fNLongClusters[36]; // number of clusters registered on long pads - TObjString* fDebugStreamPrefix; // pathname of the final location of the debug stream file (may also be an xrootd directory) - AliTPCcalibTracksCuts* fCuts; // cuts that are used for sieving the tracks used for calibration + void AddCluster(AliTPCclusterMI* cluster); + // + // Merging of the component + // + Long64_t Merge(TCollection *list); + void Add(AliTPCcalibTracksGain* cal); + // + // Histogram part + // + TH1F * GetQM(Int_t sector=-1){return (TH1F*)(sector<0 ? fArrayQM->At(72): fArrayQM->At(sector));} + TH1F * GetQT(Int_t sector=-1){return (TH1F*)(sector<0 ? fArrayQT->At(72): fArrayQT->At(sector));} + TProfile* GetProfileQM(Int_t sector){return (TProfile*)(sector<0 ? fProfileArrayQM->At(36): fProfileArrayQM->At(sector));} + TProfile* GetProfileQT(Int_t sector){return (TProfile*)(sector<0 ? fProfileArrayQT->At(36): fProfileArrayQT->At(sector));} + TProfile2D* GetProfileQM2D(Int_t sector){return (TProfile2D*)(sector<0 ? fProfileArrayQM2D->At(36): fProfileArrayQM2D->At(sector));} + TProfile2D* GetProfileQT2D(Int_t sector){return (TProfile2D*)(sector<0 ? fProfileArrayQT2D->At(36): fProfileArrayQT2D->At(sector));} + // + // Get Derived results - gain maps + // + AliTPCCalPad* CreateFitCalPad(UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); + AliTPCCalROC* CreateFitCalROC(UInt_t sector, UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); + AliTPCCalROC* CreateFitCalROC(UInt_t sector, UInt_t padType, TVectorD &fitParam, UInt_t fitType, Bool_t undoTransformation = kFALSE, Bool_t normalizeToPadSize = kFALSE); + AliTPCCalROC* CreateCombinedCalROC(const AliTPCCalROC* roc1, const AliTPCCalROC* roc2); + // + void Evaluate(Bool_t robust = kFALSE, Double_t frac = -1.); + void GetParameters(UInt_t segment, UInt_t padType, UInt_t fitType, TVectorD &fitParam); + void GetErrors(UInt_t segment, UInt_t padType, UInt_t fitType, TVectorD &fitError); + Double_t GetRedChi2(UInt_t segment, UInt_t padType, UInt_t fitType); + void GetCovarianceMatrix(UInt_t segment, UInt_t padType, UInt_t fitType, TMatrixD& covMatrix); + TLinearFitter* GetFitter(UInt_t segment, UInt_t padType, UInt_t fitType); +public: + // + // Helper function + // + static Double_t GetPadLength(Double_t lx); + static Int_t GetPadType(Double_t lx); + static Bool_t GetRowPad(Double_t lx, Double_t ly, Int_t& row, Int_t& pad); // just for debugging + // + // + TTreeSRedirector* fDebugStream; //! debug stream for debugging + AliTPCcalibTracksCuts* fCuts; // cuts that are used for sieving the tracks used for calibration + // + // Simple Profiles and histograms - per chambers + 1 total + // + TObjArray* fArrayQM; // Qmax normalized + TObjArray* fArrayQT; // Qtot normalized + TObjArray* fProfileArrayQM; // Qmax normalized versus local X + TObjArray* fProfileArrayQT; // Qtot normalized versus local X + TObjArray* fProfileArrayQM2D; // Qmax normalized versus local X and phi + TObjArray* fProfileArrayQT2D; // Qtot normalized versus local X and phi + // + // Fitters + // + AliTPCFitPad* fSimpleFitter; // simple fitter for short pads + AliTPCFitPad* fSqrtFitter; // sqrt fitter for medium pads + AliTPCFitPad* fLogFitter; // log fitter for long pads + TLinearFitter* fFitter0M; // fitting of the atenuation, angular correction, and mean chamber gain + TLinearFitter* fFitter1M; // fitting of the atenuation, angular correction, and mean chamber gain + TLinearFitter* fFitter2M; // fitting of the atenuation, angular correction, and mean chamber gain + TLinearFitter* fFitter0T; // fitting of the atenuation, angular correction, and mean chamber gain + TLinearFitter* fFitter1T; // fitting of the atenuation, angular correction, and mean chamber gain + TLinearFitter* fFitter2T; // fitting of the atenuation, angular correction, and mean chamber gain + AliTPCFitPad* fSingleSectorFitter; // just for debugging + // + // Conters + // + UInt_t fTotalTracks; // just for debugging + UInt_t fAcceptedTracks; // just for debugging + AliTPCCalPad* fDebugCalPadRaw; // just for debugging + AliTPCCalPad* fDebugCalPadCorr; // just for debugging + UInt_t fNShortClusters[36]; // number of clusters registered on short pads + UInt_t fNMediumClusters[36]; // number of clusters registered on medium pads + UInt_t fNLongClusters[36]; // number of clusters registered on long pads + // + // + AliTPCcalibTracksGain* fPrevIter; // the calibration object in its previous iteration (will not be owned by the new object, don't forget to delete it!) + // + // Setup + // static AliTPCParamSR* fgTPCparam; //! helper object for geometry related operations static const Double_t fgkM; // value used in the transformation of the charge values for the logarithmic fitter static const char* fgkDebugStreamFileName; // filename of the debug stream file