X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDCalibraFit.h;h=eb91f40acc79c63384177c5d39b0fd0bfbcf56b9;hb=9c124791a92da14016bf76abbd7e6f70392d8c82;hp=177a29b8919aa47a328700cc639c027b18032430;hpb=54f2ff1c9562706ea4e0f5d06379295e9d9803a3;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDCalibraFit.h b/TRD/AliTRDCalibraFit.h index 177a29b8919..eb91f40acc7 100644 --- a/TRD/AliTRDCalibraFit.h +++ b/TRD/AliTRDCalibraFit.h @@ -37,6 +37,7 @@ class AliLog; class AliTRDCalibraMode; class AliTRDCalibraVector; class AliTRDCalibraVdriftLinearFit; +class AliTRDCalibraExbAltFit; class AliTRDCalDet; class AliTRDCalROC; class AliTRDgeometry; @@ -54,8 +55,8 @@ class AliTRDCalibraFit : public TObject { AliTRDCalibraFit(const AliTRDCalibraFit &c); AliTRDCalibraFit &operator=(const AliTRDCalibraFit &) { return *this; } - // Function for integration range of the charge - void RangeChargeIntegration(Float_t vdrift, Float_t t0, Int_t &begin, Int_t &peak, Int_t &end) const; + // ExB calibration + void SetCalDetVdriftExB(AliTRDCalDet *calDetVdriftUsed,AliTRDCalDet *calDetExBUsed) {fCalDetVdriftUsed = calDetVdriftUsed; fCalDetExBUsed = calDetExBUsed;}; // Functions fit for CH Bool_t AnalyseCH(const TH2I *ch); @@ -65,6 +66,7 @@ class AliTRDCalibraFit : public TObject { // Functions fit for PH Bool_t AnalysePH(const TProfile2D *ph); Bool_t AnalysePH(AliTRDCalibraVector *calvect); + Double_t AnalysePHAllTogether(const TProfile2D *ph); // Functions fit for PRF Bool_t AnalysePRF(const TProfile2D *prf); @@ -75,7 +77,8 @@ class AliTRDCalibraFit : public TObject { // Functions fit for vdrift/lorentzangle Bool_t AnalyseLinearFitters(AliTRDCalibraVdriftLinearFit *calivdli); - Double_t AnalyseLinearFittersAllTogether(AliTRDCalibraVdriftLinearFit *calivdli); + void AnalyseLinearFittersAllTogether(AliTRDCalibraVdriftLinearFit *calivdli, Double_t &vdriftoverall, Double_t &exboverall); + Bool_t AnalyseExbAltFit(AliTRDCalibraExbAltFit *calivdli); // Pad Calibration Bool_t SetModeCalibration(TString name, Int_t i); @@ -97,6 +100,7 @@ class AliTRDCalibraFit : public TObject { AliTRDCalDet *CreateDetObjectGain(const TObjArray *vectorFit, Bool_t meanOtherBefore=kTRUE, Double_t scaleFitFactor = 0.02431, Bool_t perdetector = kTRUE); AliTRDCalDet *CreateDetObjectT0(const TObjArray *vectorFit, Bool_t perdetector = kFALSE); AliTRDCalDet *CreateDetObjectLorentzAngle(const TObjArray *vectorFit); + AliTRDCalDet *CreateDetObjectExbAlt(const TObjArray *vectorFit); TObject *CreatePadObjectGain(const TObjArray *vectorFit = 0, Double_t scaleFitFactor = 1.0, const AliTRDCalDet *detobject = 0); TObject *CreatePadObjectVdrift(const TObjArray *vectorFit = 0, const AliTRDCalDet *detobject = 0); @@ -114,6 +118,8 @@ class AliTRDCalibraFit : public TObject { // Fit void ChooseMethod(Short_t method) { fMethod = method; } void SetBeginFitCharge(Float_t beginFitCharge); + void SetFitOutliersChargeLow(Float_t fitOutliersChargeLow) { fOutliersFitChargeLow = fitOutliersChargeLow; } + void SetFitOutliersChargeHigh(Float_t fitOutliersChargeHigh) { fOutliersFitChargeHigh = fitOutliersChargeHigh; } void SetPeriodeFitPH(Int_t periodeFitPH); void SetTakeTheMaxPH() { fTakeTheMaxPH = kTRUE; } void SetT0Shift0(Float_t t0Shift0); @@ -124,6 +130,8 @@ class AliTRDCalibraFit : public TObject { void SetRebin(Short_t rebin); Int_t GetPeriodeFitPH() const { return fFitPHPeriode; } + Float_t GetFitOutliersChargeLow() const { return fOutliersFitChargeLow; } + Float_t GetFitOutliersChargeHigh() const { return fOutliersFitChargeHigh; } Bool_t GetTakeTheMaxPH() const { return fTakeTheMaxPH; } Float_t GetT0Shift0() const { return fT0Shift0; } Float_t GetT0Shift1() const { return fT0Shift1; } @@ -201,6 +209,8 @@ class AliTRDCalibraFit : public TObject { // Fit Short_t fMethod; // Method Float_t fBeginFitCharge; // The fit begins at mean/fBeginFitCharge for the gain calibration + Float_t fOutliersFitChargeLow; // The fit ends at fOutliersFitCharge procent number of entries + Float_t fOutliersFitChargeHigh; // The fit ends at fOutliersFitCharge procent number of entries Int_t fFitPHPeriode; // Periode of the fit PH Bool_t fTakeTheMaxPH; // Take the Max for the T0 determination Float_t fT0Shift0; // T0 Shift with the maximum positive slope @@ -250,6 +260,9 @@ class AliTRDCalibraFit : public TObject { AliTRDCalROC *fCalROC; // Current calib object AliTRDCalDet *fCalDet2; // Current calib object AliTRDCalROC *fCalROC2; // Current calib object + + AliTRDCalDet *fCalDetVdriftUsed; // ExB calibration + AliTRDCalDet *fCalDetExBUsed; // ExB calibration // Current values detector @@ -269,23 +282,27 @@ class AliTRDCalibraFit : public TObject { Bool_t InitFitPH(); Bool_t InitFitPRF(); Bool_t InitFitLinearFitter(); + Bool_t InitFitExbAlt(); // Not enough Statistics Bool_t NotEnoughStatisticCH(Int_t idect); Bool_t NotEnoughStatisticPH(Int_t idect,Double_t nentries); Bool_t NotEnoughStatisticPRF(Int_t idect); Bool_t NotEnoughStatisticLinearFitter(); + Bool_t NotEnoughStatisticExbAlt(); // Fill Infos Fit Bool_t FillInfosFitCH(Int_t idect); Bool_t FillInfosFitPH(Int_t idect,Double_t nentries); Bool_t FillInfosFitPRF(Int_t idect); Bool_t FillInfosFitLinearFitter(); + Bool_t FillInfosFitExbAlt(); void FillFillCH(Int_t idect); void FillFillPH(Int_t idect,Double_t nentries); void FillFillPRF(Int_t idect); void FillFillLinearFitter(); + void FillFillExbAlt(); Bool_t FillVectorFit(); Bool_t FillVectorFit2(); @@ -312,8 +329,10 @@ class AliTRDCalibraFit : public TObject { void SetCalROC(Int_t i); // Fit methods - void FitBisCH(TH1 *projch, Double_t mean); - void FitCH(TH1 *projch, Double_t mean); + void FitBisCHEx(TH1 *projch, Double_t mean, Double_t nentries); + void FitBisCH(TH1 *projch, Double_t mean, Double_t nentries); + void FitCH(TH1 *projch, Double_t mean, Double_t nentries); + void FitLandau(TH1 *projch, Double_t mean, Double_t nentries); void FitMeanW(TH1 *projch, Double_t nentries); void FitMeanWSm(TH1 *projch, Float_t sumAll); void FitMean(TH1 *projch, Double_t nentries, Double_t mean); @@ -343,11 +362,15 @@ class AliTRDCalibraFit : public TObject { static Double_t AsymmGauss(const Double_t *x, const Double_t *par); static Double_t FuncLandauGaus(const Double_t *x, const Double_t *par); static Double_t LanGauFun(const Double_t *x, const Double_t *par); + static Double_t LanGauFunEx(const Double_t *x, const Double_t *par); TF1 *LanGauFit(TH1 *his, const Double_t *fitrange, const Double_t *startvalues , const Double_t *parlimitslo, const Double_t *parlimitshi, Double_t *fitparams , Double_t *fiterrors, Double_t *chiSqr, Int_t *ndf) const; - Int_t LanGauPro(const Double_t *params, Double_t &maxx, Double_t &fwhm); - static Double_t GausConstant(const Double_t *x, const Double_t *par); + TF1 *LanGauFitEx(TH1 *his, const Double_t *fitrange, const Double_t *startvalues + , const Double_t *parlimitslo, const Double_t *parlimitshi + , Double_t *fitparams, Double_t *fiterrors + , Double_t *chiSqr, Int_t *ndf) const; + // This is a singleton, contructor is private! AliTRDCalibraFit();