fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(11),
+ fNbBindx(32),
+ fNbBindy(70),
+ fRangedx(0.8),
+ fRangedy(1.4),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(10),
+ fNbBindx(32),
+ fNbBindy(70),
+ fRangedx(0.8),
+ fRangedy(1.4),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
fLinearFitterPArray(540),
fLinearFitterEArray(540),
fRobustFit(kTRUE),
+ fMinNpointsFit(10),
+ fNbBindx(32),
+ fNbBindy(70),
+ fRangedx(0.8),
+ fRangedy(1.4),
fDebugStreamer(0x0),
fDebugLevel(0),
fSeeDetector(0)
}
}
//______________________________________________________________________________________
+TH2S* AliTRDCalibraVdriftLinearFit::AddAll()
+{
+ //
+ // return pointer to TH2S of all added histos
+ //
+
+ TH2S *histo = 0x0;
+ for(Int_t k=0; k < 540; k++) {
+ TH2S * u = GetLinearFitterHistoForce(k);
+ if(k == 0) {
+ histo = new TH2S(*u);
+ histo->SetName("sum");
+ }
+ else histo->Add(u);
+ }
+
+ return histo;
+
+}
+//______________________________________________________________________________________
TH2S* AliTRDCalibraVdriftLinearFit::GetLinearFitterHisto(Int_t detector, Bool_t force)
{
//
name += fVersion;
TH2S *lfdv = new TH2S((const Char_t *)name,(const Char_t *) name
- ,36,-0.9,0.9,48
- ,-1.2,1.2);
+ ,(Int_t)fNbBindx,-fRangedx,fRangedx,(Int_t)fNbBindy
+ ,-fRangedy,fRangedy);
lfdv->SetXTitle("tan(phi_{track})");
lfdv->SetYTitle("dy/dt");
lfdv->SetZTitle("Number of clusters");
if ( linearfitterhisto != 0 ){
// Fill a linearfitter
- TAxis *xaxis = linearfitterhisto->GetXaxis();
- TAxis *yaxis = linearfitterhisto->GetYaxis();
+ const TAxis *xaxis = linearfitterhisto->GetXaxis();
+ const TAxis *yaxis = linearfitterhisto->GetYaxis();
TLinearFitter linearfitter = TLinearFitter(2,"pol1");
//printf("test\n");
Double_t integral = linearfitterhisto->Integral();
Int_t nEntries=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;
//_________Helper function__________________________________________________
TGraphErrors* AliTRDCalibraVdriftLinearFit::DrawMS(const TH2 *const h2, Int_t &nEntries)
{
+ //
+ // Debug function
+ //
+
TF1 fg("fg", "gaus", -10., 30.);
TGraphErrors *gp = new TGraphErrors();
- TAxis *ax(h2->GetXaxis());
- TAxis *ay(h2->GetYaxis());
+ const TAxis *ax(h2->GetXaxis());
+ const TAxis *ay(h2->GetYaxis());
TH1D *h1(NULL);
for(Int_t ipt(0), jpt(1), ig(0); ipt<ax->GetNbins(); ipt++, jpt++){
h1 = h2->ProjectionY("py", jpt, jpt);
//Warning("drawMS()", Form("reject x[%d]=%f on NDF=%d", jpt, x, fg.GetNDF()));
continue;
}
- if(fg.GetParameter(1)+fg.GetParameter(2)/2>ay->GetXmax() || fg.GetParameter(1)-fg.GetParameter(2)/2<ay->GetXmin()) continue;
+ if(((fg.GetParameter(1)+fg.GetParameter(2)/2)>ay->GetXmax()) || ((fg.GetParameter(1)-fg.GetParameter(2)/2)<ay->GetXmin()) || (TMath::Abs(fg.GetParameter(0))< 0.00001)) continue;
gp->SetPoint(ig, ax->GetBinCenter(jpt), fg.GetParameter(1));
gp->SetPointError(ig, 0, TMath::Sqrt(pow(fg.GetParError(1),2) + (1/pow(fg.GetParameter(0),2))));
ig++;