fCutWithVdriftCalib(kFALSE),
fMinNbTRDtracklets(0),
fMinTRDMomentum(0),
+ fScaleGainWithTPCSignal(kFALSE),
fLow(0),
fHigh(30),
fFillZero(kFALSE),
fTRDCalibraFillHisto->SetLinearFitterOn(fVdriftLinear); // Other possibility vdrift VDRIFT
fTRDCalibraFillHisto->SetLinearFitterDebugOn(fVdriftLinear); // Other possibility vdrift
fTRDCalibraFillHisto->SetExbAltFitOn(fExbAlt); // Alternative method for exb
+ fTRDCalibraFillHisto->SetScaleWithTPCSignal(fScaleGainWithTPCSignal); // Scale Gain with TPC signal
for(Int_t k = 0; k < 3; k++){
if(((fNz[k] != 10) && (fNrphi[k] != 10)) && ((fNz[k] != 100) && (fNrphi[k] != 100))) {
fTRDCalibraFillHisto->SetNz(k,fNz[k]); // Mode calibration
void SetCutWithVdriftCalib(Bool_t cutWithVdriftCalib) {fCutWithVdriftCalib = cutWithVdriftCalib;};
void SetMinNbTRDtracklets(Int_t minNbTRDtracklets) {fMinNbTRDtracklets = minNbTRDtracklets;};
void SetMinTRDMometum(Double_t minTRDMomentum) {fMinTRDMomentum = minTRDMomentum;};
-
+ void SetScaleGainWithTPCSignal(Bool_t scaleGainWithTPCSignal) {fScaleGainWithTPCSignal = scaleGainWithTPCSignal;};
+
void SetVersionGainUsed(Int_t versionGainUsed) { fVersionGainUsed = versionGainUsed; }
void SetSubVersionGainUsed(Int_t subVersionGainUsed) { fSubVersionGainUsed = subVersionGainUsed; }
void SetVersionGainLocalUsed(Int_t versionGainLocalUsed) { fVersionGainLocalUsed = versionGainLocalUsed; }
Bool_t fCutWithVdriftCalib; // CutWithVdriftCalib for the gain and PH
Int_t fMinNbTRDtracklets; // Min number of TRD tracklets
Float_t fMinTRDMomentum; // Min TRD momentum
+ Bool_t fScaleGainWithTPCSignal; // Scale the TPC gain with the TPC signal
Int_t fLow; // lower limit of nb of TRD clusters per tracklet
Int_t fHigh; // higher limit of nb of TRD clusters per tracklet
AliTRDCalibTask(const AliTRDCalibTask&);
AliTRDCalibTask& operator=(const AliTRDCalibTask&);
- ClassDef(AliTRDCalibTask, 2);
+ ClassDef(AliTRDCalibTask, 3);
};
#endif
,fLinearFitterOn(kFALSE)
,fLinearFitterDebugOn(kFALSE)
,fExbAltFitOn(kFALSE)
+ ,fScaleWithTPCSignal(kFALSE)
,fRelativeScale(0)
,fThresholdClusterPRF2(15.0)
,fLimitChargeIntegration(kFALSE)
,fLinearFitterOn(c.fLinearFitterOn)
,fLinearFitterDebugOn(c.fLinearFitterDebugOn)
,fExbAltFitOn(c.fExbAltFitOn)
+ ,fScaleWithTPCSignal(c.fScaleWithTPCSignal)
,fRelativeScale(c.fRelativeScale)
,fThresholdClusterPRF2(c.fThresholdClusterPRF2)
,fLimitChargeIntegration(c.fLimitChargeIntegration)
Int_t numberoftrdtracklets = t->GetNumberOfTracklets();
if(numberoftrdtracklets < fMinNbTRDtracklets) return kFALSE;
+ Double_t tpcsignal = esdtrack->GetTPCsignal()/50.0;
+ if(fScaleWithTPCSignal && tpcsignal <0.00001) return kFALSE;
+
//
if (!fCalibDB) {
AliInfo("Could not get calibDB");
// Add the charge if shared cluster
cls = tracklet->GetClusters(jc+AliTRDseedV1::kNtb);
//
- chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc),group,row,col,cls); //tracklet->GetdQdl(jc)
+ //Scale with TPC signal or not
+ if(!fScaleWithTPCSignal) {
+ chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc),group,row,col,cls); //tracklet->GetdQdl(jc)
+ //printf("Do not scale now\n");
+ }
+ else {
+ chargeQ += StoreInfoCHPHtrack(cl, tracklet->GetQperTB(jc)/tpcsignal,group,row,col,cls); //tracklet->GetdQdl(jc)
+ }
+
}
////////////////////////////////////////
Float_t dcaz = b[1];
Int_t tpcnbclusters = 0;
if(esdtrack) tpcnbclusters = esdtrack->GetTPCclusters(0);
- Double_t tpcsignal = 0.0;
- if(esdtrack) tpcsignal = esdtrack->GetTPCsignal();
+ Double_t ttpcsignal = 0.0;
+ if(esdtrack) ttpcsignal = esdtrack->GetTPCsignal();
Int_t cutvdriftlinear = 0;
if(!pass) cutvdriftlinear = 1;
"dcaxy="<<dcaxy<<
"dcaz="<<dcaz<<
"nbtpccls="<<tpcnbclusters<<
- "tpcsignal="<<tpcsignal<<
+ "tpcsignal="<<ttpcsignal<<
"cutvdriftlinear="<<cutvdriftlinear<<
"ptrd="<<momentum<<
"nbtrdtracklet="<<numberoftrdtracklets<<
void SetLinearFitterOn(Bool_t linearfitteron = kTRUE) { fLinearFitterOn = linearfitteron;}
void SetLinearFitterDebugOn(Bool_t debug = kTRUE) { fLinearFitterDebugOn = debug; }
void SetExbAltFitOn(Bool_t fiton = kTRUE) { fExbAltFitOn = fiton;}
+ void SetScaleWithTPCSignal(Bool_t scaleWithTPCSignal = kTRUE) { fScaleWithTPCSignal = scaleWithTPCSignal;}
void SetFirstRunGain(Int_t firstRunGain) { fFirstRunGain = firstRunGain; }
void SetVersionGainUsed(Int_t versionGainUsed) { fVersionGainUsed = versionGainUsed; }
void SetSubVersionGainUsed(Int_t subVersionGainUsed) { fSubVersionGainUsed = subVersionGainUsed; }
Bool_t fVector2d; // Chose to fill vectors
Bool_t fLinearFitterOn; // Method with linear fit for drift velocity
Bool_t fLinearFitterDebugOn; // Method with linear fit for drift velocity
- Bool_t fExbAltFitOn; // Enable parabolic fit for exb
+ Bool_t fExbAltFitOn; // Enable parabolic fit for exb
+ Bool_t fScaleWithTPCSignal; // Scale the gain with TPC signal (If use then ask at least 70 TPC clusters)
// How to fill the 2D
Float_t fRelativeScale; // Scale of the deposited charge
AliTRDCalibraFillHisto();
virtual ~AliTRDCalibraFillHisto();
- ClassDef(AliTRDCalibraFillHisto,5) // TRD Calibration class
+ ClassDef(AliTRDCalibraFillHisto,6) // TRD Calibration class
};
fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(11),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(10),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(10),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
TGraphErrors *gg=DrawMS(fitterhisto,nEntries);
if (!gg) continue;
// Number of points of the TGraphErrors
- if(gg->GetN() < 20) {
+ //printf("Number of points %d for detector %d\n",gg->GetN(),cb);
+ if(gg->GetN() < fMinNpointsFit) {
if(gg) delete gg;
continue;
}
(*par)[1] = f1->GetParameter(1);
fLinearFitterPArray.AddAt(par,cb);
fLinearFitterEArray.AddAt(parE,cb);
+ //printf("Value %f for detector %d\n",(*par)[1],cb);
if(fDebugLevel==0) {
if(gg) delete gg;
TH2S *GetLinearFitterHistoNoForce(Int_t detector) const { return (TH2S*)fLinearFitterHistoArray.UncheckedAt(detector);};
Bool_t GetParam(Int_t detector, TVectorD *param);
Bool_t GetError(Int_t detector, TVectorD *error);
+ Int_t GetMinNumberOfPointsForFit() const { return fMinNpointsFit;};
TObjArray *GetPArray() { return &fLinearFitterPArray; };
TObjArray *GetEArray() { return &fLinearFitterEArray; };
TObjArray GetHistoArray() const { return fLinearFitterHistoArray; };
void SetRobustFit(Bool_t robustFit) { fRobustFit = robustFit; };
+ void SetMinNumberOfPointsForFit(Int_t minNpointsFit) { fMinNpointsFit = minNpointsFit;};
// Debug
void SetDebugLevel(Short_t level) { fDebugLevel = level; };
TObjArray fLinearFitterPArray; // Array of result parameters from linear fitters for the detectors
TObjArray fLinearFitterEArray; // Array of result errors from linear fitters for the detectors
Bool_t fRobustFit; // Robust fit or not
-
+ Int_t fMinNpointsFit; // Min number of points for the fit
+
//For debugging
TTreeSRedirector *fDebugStreamer; //!Debug streamer
Short_t fDebugLevel; // Flag for debugging
Int_t fSeeDetector; // Detector to see
- ClassDef(AliTRDCalibraVdriftLinearFit,3) // Online Vdrift calibration
+ ClassDef(AliTRDCalibraVdriftLinearFit,4) // Online Vdrift calibration
};
fRobustFitExbAlt(kFALSE),
fAlternativeVdrfitFit(kFALSE),
fAlternativeExbAltFit(kFALSE),
+ fMinNbOfPointVdriftFit(11),
fMethodeGain(0),
fOutliersFitChargeLow(0.03),
fOutliersFitChargeHigh(0.7),
AliTRDCalibraFit *calibra = AliTRDCalibraFit::Instance();
calibra->SetCalDetVdriftExB(fCalDetVdriftUsed,fCalDetExBUsed);
calibra->SetMinEntries(fMinStatsVdriftLinear); // If there is less than 1000 entries in the histo: no fit
+ printf("The mean stat is by %d for VdriftLinear\n",fMinStatsVdriftLinear);
//printf("Fill PE Array\n");
fAliTRDCalibraVdriftLinearFit->SetRobustFit(fRobustFitDriftVelocity);
+ fAliTRDCalibraVdriftLinearFit->SetMinNumberOfPointsForFit(fMinNbOfPointVdriftFit);
if(!fAlternativeVdrfitFit)
fAliTRDCalibraVdriftLinearFit->FillPEArray();
else
void SetMinStatsGain(Int_t minStatsGain) { fMinStatsGain = minStatsGain; }
void SetMinStatsPRF(Int_t minStatsPRF) { fMinStatsPRF = minStatsPRF; }
void SetMinStatsChamberStatus(Int_t minStatsChamberStatus) { fMinStatsChamberStatus = minStatsChamberStatus; }
- void SetSingleMinStatsChamberStatus(Int_t minSingleStatsChamberStatus) { fMinSingleStatsChamberStatus = minSingleStatsChamberStatus; }
+ void SetSingleMinStatsChamberStatus(Int_t minSingleStatsChamberStatus) { fMinSingleStatsChamberStatus = minSingleStatsChamberStatus; }
void SetLimitValidateNoData(Int_t nodatavalidate) { fNoDataValidate = nodatavalidate; };
void SetLimitValidateBadCalib(Int_t badcalibvalidate) { fBadCalibValidate = badcalibvalidate; };
void SetBackCorrectGain(Bool_t backCorrectGain) { fBackCorrectGain = backCorrectGain; }
void SetRobustFitDriftVelocity(Bool_t robustFitDriftVelocity) { fRobustFitDriftVelocity = robustFitDriftVelocity;};
void SetRobustFitExbAlt(Bool_t robustFitExbAlt) { fRobustFitExbAlt = robustFitExbAlt;};
void SetAlternativeDriftVelocityFit(Bool_t alt) { fAlternativeVdrfitFit = alt;};
+ void SetMinNbOfPointVdriftFit(Int_t minNbOfPointVdriftFit) { fMinNbOfPointVdriftFit = minNbOfPointVdriftFit;};
void SetAlternativeExbAltFit(Bool_t alt) { fAlternativeExbAltFit = alt;};
void SetMethodeFitGain(Int_t methodeFitGain) { fMethodeGain = methodeFitGain;};
void SetOutliersFitChargeLow(Float_t outliersFitChargeLow) { fOutliersFitChargeLow = outliersFitChargeLow; }
Bool_t fRobustFitExbAlt; // Robust fit for the exb alt
Bool_t fAlternativeVdrfitFit; // Alternative fitting method for vdrift calibration
Bool_t fAlternativeExbAltFit; // Alternative fitting method for the alternative exb calibarion method
+ Int_t fMinNbOfPointVdriftFit; // Min number of points for the drift velocity calibration
Int_t fMethodeGain; // Methode Gain Fit
Float_t fOutliersFitChargeLow; // The fit starts at fOutliersFitChargeLow procent number of entries
Float_t fOutliersFitChargeHigh; // The fit starts at fOutliersFitChargeHigh procent number of entries
Bool_t fPHQon; //switch of PHQ
- ClassDef(AliTRDPreprocessorOffline,3)
+ ClassDef(AliTRDPreprocessorOffline,4)
};
#endif