X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCcalibLaser.h;h=9c4262baf11f9b64bb040e12ad96c45183b44017;hb=60721370906d4a7695f77297891811a5d1b15674;hp=716297f0c82424524f798818937135773754f973;hpb=ecb7e705361b01c6b23703357324a2f0bf176b78;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibLaser.h b/TPC/AliTPCcalibLaser.h index 716297f0c82..9c4262baf11 100644 --- a/TPC/AliTPCcalibLaser.h +++ b/TPC/AliTPCcalibLaser.h @@ -13,6 +13,8 @@ #include "TLinearFitter.h" #include "AliTPCcalibBase.h" #include "TH1.h" +#include "TH2F.h" +#include "THnSparse.h" class AliExternalTrackParam; @@ -21,69 +23,162 @@ class AliESDEvent; class AliESDfriend; class TGraphErrors; class TTree; +class TH2F; +class AliTPCLaserTrack; +class TCut; class AliTPCcalibLaser:public AliTPCcalibBase { public: AliTPCcalibLaser(); - AliTPCcalibLaser(const Text_t *name, const Text_t *title); + AliTPCcalibLaser(const Text_t *name, const Text_t *title, Bool_t full=kTRUE); + AliTPCcalibLaser(const AliTPCcalibLaser& laser); + AliTPCcalibLaser & operator=(const AliTPCcalibLaser& calibLaser); virtual ~AliTPCcalibLaser(); virtual void Process(AliESDEvent *event); + Int_t GetNtracks(){return fNtracks;} virtual void Analyze(); virtual Long64_t Merge(TCollection *li); - virtual void DumpMeanInfo(Float_t bfield, Int_t minEntries=100); - static void DumpScanInfo(TTree * tree); + virtual void DumpMeanInfo(Int_t run=-1); + static void DumpScanInfo(TTree * tree, const char * cutUser="entries>300&&(gz2<0.15&&gphi2<0.1&&gp42<0.02&&abs(gp41)<0.03)"); + static void DumpFitInfo(TTree * chainFit, Int_t id); + static TH1* GetLaserProjection(TH2F* his, Int_t laser){return his->ProjectionY("aaa",laser+1,laser+1);} // // virtual void DumpLaser(Int_t id); - virtual void RefitLaser(Int_t id); virtual void RefitLaserJW(Int_t id); void FitDriftV(); - void MakeDistHisto(); + Bool_t FitDriftV(Float_t minFraction); + // + void MakeDistHisto(Int_t id); void AddCut(Double_t xcut, Double_t ycut, Double_t ncl){fEdgeXcuts[fNcuts]=xcut; fEdgeYcuts[fNcuts]=ycut; fNClCuts[fNcuts]=ncl; fNcuts++;} Int_t FindMirror(AliESDtrack *track, AliTPCseed *seed); Bool_t AcceptLaser(Int_t id); - + Float_t GetDistance(AliExternalTrackParam *track, AliTPCLaserTrack *ltrp); + void MakeFitHistos(); + void MergeFitHistos(AliTPCcalibLaser * add); + void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);}; + void Process(AliTPCseed *track){return AliTPCcalibBase::Process(track);} + // + void SetBeamParameters(TVectorD& meanOffset, TVectorD& meanSlope, + TVectorD& sectorArray, Int_t option); + void SetFixedDriftVConstant(Double_t aside0, Double_t aside1, + Double_t cside0, Double_t cside1) + {fUseFixedDriftV = 1; fFixedFitAside0=aside0; fFixedFitAside1=aside1; + fFixedFitCside0=cside0; fFixedFitCside1=cside1;} + AliESDEvent * fESD; //! ESD event - not OWNER AliESDfriend * fESDfriend; //! ESD event - not OWNER + Int_t fNtracks; //! counter of associated laser tracks + // TObjArray fTracksMirror; //! tracks with mirror information TObjArray fTracksEsd; //! tracks with reconstructed information - // not owner ESD TObjArray fTracksEsdParam; //! tracks with reconstructed information - // is owner ESD at mirror TObjArray fTracksTPC; //! tracks with reconstructed information - TPC + Int_t fCounter[336]; //! counter of usage + Float_t fClusterCounter[336]; //!couter of clusters in "sensitive are" + Float_t fClusterSatur[336]; //!couter of saturated clusters in "sensitive are" + Bool_t fFullCalib; // do full calibrration + Float_t fFitZ[336]; //fitted z position // TObjArray fDeltaZ; //-> array of histograms of delta z for each track - TObjArray fDeltaPhi; //-> array of histograms of delta z for each track - TObjArray fDeltaPhiP; //-> array of histograms of delta z for each track + TObjArray fDeltaP3; //-> array of histograms of P3 for each track + TObjArray fDeltaP4; //-> array of histograms of P4 for each track + TObjArray fDeltaPhi; //-> array of histograms of delta Phi for each track + TObjArray fDeltaPhiP; //-> array of histograms of delta Phi direction for each track TObjArray fSignals; //->Array of dedx signals + + // + // Refit residuals histogram + // + THnSparseS *fHisLaser; // N dim histogram of laser + TH2F *fHisNclIn; //->Number of clusters inner + TH2F *fHisNclOut; //->Number of clusters outer + TH2F *fHisNclIO; //->Number of cluster inner outer + TH2F *fHisLclIn; //->Level arm inner + TH2F *fHisLclOut; //->Level arm outer + TH2F *fHisLclIO; //->Level aram inner outer + + TH2F *fHisdEdx; //->dEdx histo + TH2F *fHisdZfit; //->distance to the mirror after linear fit + // + // + TH2F *fHisChi2YIn1; //->chi2 y inner - line + TH2F *fHisChi2YOut1; //->chi2 y inner - line + TH2F *fHisChi2YIn2; //->chi2 y inner - parabola + TH2F *fHisChi2YOut2; //->chi2 y inner - parabola + TH2F *fHisChi2YIO1; //->chi2 y IO - common + TH2F *fHisChi2ZIn1; //->chi2 z inner - line + TH2F *fHisChi2ZOut1; //->chi2 z inner - line + TH2F *fHisChi2ZIn2; //->chi2 z inner - parabola + TH2F *fHisChi2ZOut2; //->chi2 z inner - parabola + TH2F *fHisChi2ZIO1; //->chi2 z IO - common + // + // + TH2F *fHisPy1vP0; //-> delta y P0outer-P0inner - line + TH2F *fHisPy2vP0; //-> delta y P0outer-P0inner - parabola + TH2F *fHisPy3vP0; //-> delta y P0outer-P0inner - common parabola + TH2F *fHisPy1vP1; //-> delta ky P1outer-P1inner - line + TH2F *fHisPy2vP1; //-> delta ky P1outer-P1inner - parabola + TH2F *fHisPy3vP1; //-> delta ky P1outer-P1inner - common parabola + TH2F *fHisPy2vP2In; //-> Curv P2inner - parabola + TH2F *fHisPy2vP2Out; //-> Curv P2outer - parabola + TH2F *fHisPy3vP2IO; //-> Curv P2outerinner - common parabola + // + // + TH2F *fHisPz1vP0; //-> delta z P0outer-P0inner - line + TH2F *fHisPz2vP0; //-> delta z P0outer-P0inner - parabola + TH2F *fHisPz3vP0; //-> delta z P0outer-P0inner - common parabola + TH2F *fHisPz1vP1; //-> delta kz P1outer-P1inner - line + TH2F *fHisPz2vP1; //-> delta kz P1outer-P1inner - parabola + TH2F *fHisPz3vP1; //-> delta kz P1outer-P1inner - common parabola + TH2F *fHisPz2vP2In; //-> Curv P2inner - parabola + TH2F *fHisPz2vP2Out; //-> Curv P2outer - parabola + TH2F *fHisPz3vP2IO; //-> Curv P2outerinner - common parabola // // Residual histograms // TObjArray fDeltaYres; //-> array of histograms of delta y residuals for each track TObjArray fDeltaZres; //-> array of histograms of delta z residuals for each track - // Fit Parameter histograms - TObjArray fPol2Par2InY; //-> array of histograms. 2nd derivative of pol2 fits per track (Inner chamber) - TObjArray fDiffPar1InY; //-> array of histograms. difference of 1st derivative of pol1 and pol2 fits per track (Inner chamber) - TObjArray fPol2Par2OutY; //-> array of histograms. 2nd derivative of pol2 fits per track (Outer chamber) - TObjArray fDiffPar1OutY; //-> array of histograms. difference of 1st derivative of pol1 and pol2 fits per track (Outer chamber) - TObjArray fPol2Par2InZ; //-> array of histograms. 2nd derivative of pol2 fits per track (Inner chamber) - TObjArray fDiffPar1InZ; //-> array of histograms. difference of 1st derivative of pol1 and pol2 fits per track (Inner chamber) - TObjArray fPol2Par2OutZ; //-> array of histograms. 2nd derivative of pol2 fits per track (Outer chamber) - TObjArray fDiffPar1OutZ; //-> array of histograms. difference of 1st derivative of pol1 and pol2 fits per track (Outer chamber) + TObjArray fDeltaYres2; //-> array of histograms of delta y residuals for each track + TObjArray fDeltaZres2; //-> array of histograms of delta z residuals for each track + TObjArray fDeltaYresAbs; //-> array of histograms of absolute delta y residuals for each track + TH1F *fHisYAbsErrors; //-> Number of errors (wrongly assigned tracks) per beam + TObjArray fDeltaZresAbs; //-> array of histograms of absolute delta z residuals for each track + TH1F *fHisZAbsErrors; //-> Number of errors (wrongly assigned tracks or missing drift velocity) per beam + // TObjArray fDeltaYres3; //-> array of histograms of delta y residuals for each track + //TObjArray fDeltaZres3; //-> array of histograms of delta z residuals for each track + // TVectorD* fFitAside; //! drift fit - A side TVectorD* fFitCside; //! drift fit - C- side + TVectorD* fFitACside; //! drift fit - A+C- side // TVectorD fEdgeXcuts; //! cuts in local x direction; used in the refit of the laser tracks TVectorD fEdgeYcuts; //! cuts in local y direction; used in the refit of the laser tracks TVectorD fNClCuts; //! cuts on the number of clusters per tracklet; used in the refit of the laser tracks Int_t fNcuts; //! number of cuts + TVectorD fBeamSectorOuter; //! sector map for beams in outer sector + TVectorD fBeamSectorInner; //! sector map for beams in inner sector + TVectorD fBeamOffsetYOuter; //! absolute y beam offset in outer sector + TVectorD fBeamSlopeYOuter; //! absolute y beam slope in outer sector + TVectorD fBeamOffsetYInner; //! absolute y beam offset in inner sector + TVectorD fBeamSlopeYInner; //! absolute y beam slope in inner sector + TVectorD fBeamOffsetZOuter; //! absolute z beam offset in outer sectror + TVectorD fBeamSlopeZOuter; //! absolute z beam slope in outer sector + TVectorD fBeamOffsetZInner; //! absolute z beam offset in inner sectror + TVectorD fBeamSlopeZInner; //! absolute z beam slope in inner sector + Bool_t fInverseSlopeZ; //! invert slope in z - mismatch between database and lasers + Int_t fUseFixedDriftV; // flag for fixed drift velocity for abs res + Double_t fFixedFitAside0; // Fixed drift v constant 0 - A side + Double_t fFixedFitAside1; // Fixed drift v constant 1 - A side + Double_t fFixedFitCside0; // Fixed drift v constant 0 - C side + Double_t fFixedFitCside1; // Fixed drift v constant 1 - C side // - Int_t fRun; // current run number - Int_t fEvent; // cuttent event - internal counter private: - ClassDef(AliTPCcalibLaser,1) + ClassDef(AliTPCcalibLaser,5) };