class AliTRDCalibraMode;
class AliTRDCalibraVector;
class AliTRDCalibraVdriftLinearFit;
+class AliTRDCalibraExbAltFit;
class AliTRDCalDet;
class AliTRDCalROC;
class AliTRDgeometry;
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);
// 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);
// 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);
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);
// 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);
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; }
// 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
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
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();
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);
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();