,{"p_{t}^{MC} [GeV/c]", "MC: #mu^{TPC}(#Deltap_{t}/p_{t}^{MC}) [%]", "MC: #sigma^{TPC}(#Deltap_{t}/p_{t}^{MC}) [%]"}
,{"1/p_{t}^{MC} [c/GeV]", "MC PULL: #mu_{1/p_{t}}^{TPC}", "MC PULL: #sigma_{1/p_{t}}^{TPC}"}
,{"p^{MC} [GeV/c]", "MC: #mu^{TPC}(#Deltap/p^{MC}) [%]", "MC: #sigma^{TPC}(#Deltap/p^{MC}) [%]"}
- ,{"p^{MC} [GeV/c]", "MC PULL: #mu^{TPC}(#Deltap/#sigmap)", "MC: #sigma^{TPC}(#Deltap/#sigmap)"}
+ ,{"p^{MC} [GeV/c]", "MC PULL: #mu^{TPC}(#Deltap/#sigma_{p})", "MC: #sigma^{TPC}(#Deltap/#sigma_{p})"}
// MC track HMPID
,{"tg(#theta)", "MC: #mu_{z}^{TOF} [#mum]", "MC: #sigma_{z}^{TOF} [#mum]"}
,{"tg(#theta)", "MC PULL: #mu_{z}^{TOF}", "MC PULL: #sigma_{z}^{TOF}"}
Double_t p0 = TMath::Sqrt(1.+ dzdx0*dzdx0)*pt0,
p = TMath::Sqrt(1.+ PAR[3]*PAR[3])/PAR[4];
- printf("p[%f] dp[%f] s[%d]\n", p0, 1.-p/p0, is);
+ //printf("p[%f] dp[%f] s[%d]\n", p0, 1.-p/p0, is);
((TH3S*)arr->At(10))->Fill(p0, 1.-p/p0, is);
Double_t tgl2 = PAR[3]*PAR[3];
Double_t s2 = tgl2*COV(3,3)/PAR[4]/(1.+tgl2)+2.*PAR[3]*COV(3,4)/PAR[4]+(1.+tgl2)*COV(4,4);
AliWarning("Please provide a canvas to draw results.");
return kFALSE;
}
- TList *l = 0x0;
+ TList *l = 0x0; TVirtualPad *pad=0x0;
switch(ifig){
case kCluster:
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0] = -.3; xy[1] = -200.; xy[2] = .3; xy[3] = 1000.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kCluster, 0)) break;
if(!GetGraphPlot(&xy[0], kCluster, 1)) break;
return kTRUE;
case kTracklet:
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0] = -.3; xy[1] = -500.; xy[2] = .3; xy[3] = 1500.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kTracklet, 0)) break;
if(!GetGraphPlot(&xy[0], kTracklet, 1)) break;
return kTRUE;
case 2: // kTracklet z
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0] = -1.; xy[1] = -1000.; xy[2] = 1.; xy[3] = 4000.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kTracklet, 2)) break;
if(GetGraphPlot(&xy[0], kTracklet, 4)) return kTRUE;
break;
case 4: // kTrackTPC y
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0] = -.3; xy[1] = -500.; xy[2] = .3; xy[3] = 1500.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kTrackTPC, 0)) break;
if(!GetGraphPlot(&xy[0], kTrackTPC, 1)) break;
return kTRUE;
case 5: // kTrackTPC z
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0] = -1.; xy[1] = -1000.; xy[2] = 1.; xy[3] = 4000.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kTrackTPC, 2)) break;
if(GetGraphPlot(&xy[0], kTrackTPC, 4)) return kTRUE;
break;
case 7: // kMCcluster
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0]=-.3; xy[1]=-50.; xy[2]=.3; xy[3]=650.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCcluster, 0)) break;
if(!GetGraphPlot(&xy[0], kMCcluster, 1)) break;
return kTRUE;
case 8: //kMCtracklet [y]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0]=-.2; xy[1]=-50.; xy[2]=.2; xy[3] =250.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtracklet, 0)) break;
if(!GetGraphPlot(&xy[0], kMCtracklet, 1)) break;
return kTRUE;
case 9: //kMCtracklet [z]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0]=-1.; xy[1]=-100.; xy[2]=1.; xy[3] =2500.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtracklet, 2)) break;
if(!GetGraphPlot(&xy[0], kMCtracklet, 4)) break;
return kTRUE;
case 11: //kMCtrack [y]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0]=-.2; xy[1]=-50.; xy[2]=.2; xy[3] =200.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrack, 0)) break;
if(!GetGraphPlot(&xy[0], kMCtrack, 1)) break;
return kTRUE;
case 12: //kMCtrack [z]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0., 0.); l=gPad->GetListOfPrimitives();
xy[0]=-1.; xy[1]=-500.; xy[2]=1.; xy[3] =2000.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrack, 2)) break;
if(!GetGraphPlot(&xy[0], kMCtrack, 3)) break;
return kTRUE;
case 13: //kMCtrack [phi/snp]
- //gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ //gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-.2; xy[1]=-2.; xy[2]=.2; xy[3] =5.;
//((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrack, 4)) break;
// if(!GetGraphPlot(&xy[0], kMCtrack, 3)) break;
return kTRUE;
case 14: //kMCtrack [theta/tgl]
- //gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ //gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-1.; xy[1]=-50.; xy[2]=1.; xy[3] =70.;
//((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrack, 6)) break;
xy[0] = 0.; xy[1] = -5.; xy[2] = 12.; xy[3] = 7.;
gPad->Divide(2, 3, 0.,0.,kGreen); l=gPad->GetListOfPrimitives();
for(Int_t il=0; il<AliTRDgeometry::kNlayer; il++){
- TVirtualPad *pad = (TVirtualPad*)l->At(il);
+ pad = (TVirtualPad*)l->At(il); pad->cd();
pad->SetMargin(0.07, 0.07, 0.1, 0.);
- pad->cd();
- if(!GetGraphTrack(&xy[0], il)) break;
+ if(!GetGraphTrack(&xy[0], 8, il)) break;
}
return kTRUE;
case 16: //kMCtrack [p]
- xy[0] = 0.; xy[1] = -5.; xy[2] = 12.; xy[3] = 7.;
+ xy[0] = 0.; xy[1] = -7.5; xy[2] = 12.; xy[3] = 10.5;
gPad->Divide(2, 3, 0.,0.,kGreen); l=gPad->GetListOfPrimitives();
for(Int_t il=0; il<AliTRDgeometry::kNlayer; il++){
- TVirtualPad *pad = (TVirtualPad*)l->At(il);
+ pad = (TVirtualPad*)l->At(il); pad->cd();
pad->SetMargin(0.07, 0.07, 0.1, 0.);
- pad->cd();
- if(!GetGraphTrack(&xy[0], il)) break;
+ if(!GetGraphTrack(&xy[0], 10, il)) break;
}
return kTRUE;
case 17: // kMCtrackTPC [y]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-.25; xy[1]=-50.; xy[2]=.25; xy[3] =800.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 0)) break;
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 1)) break;
return kTRUE;
case 18: // kMCtrackTPC [z]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-1.; xy[1]=-500.; xy[2]=1.; xy[3] =800.;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 2)) break;
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 3)) break;
return kTRUE;
case 19: // kMCtrackTPC [phi|snp]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-.25; xy[1]=-0.5; xy[2]=.25; xy[3] =2.5;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 4)) break;
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 5)) break;
return kTRUE;
case 20: // kMCtrackTPC [theta|tgl]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0]=-1.; xy[1]=-10.5; xy[2]=1.; xy[3] =20.5;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 6)) break;
if(!GetGraphPlot(&xy[0], kMCtrackTPC, 7)) break;
return kTRUE;
case 21: // kMCtrackTPC [pt]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1,0.,0.); l=gPad->GetListOfPrimitives();
xy[0] = 0.; xy[1] = -.8; xy[2] = 12.; xy[3] = 2.3;
((TVirtualPad*)l->At(0))->cd();
if(!GetGraphTrackTPC(xy, 8)) break;
if(!GetGraphTrackTPC(xy, 9)) break;
return kTRUE;
case 22: // kMCtrackTPC [p]
- gPad->Divide(2, 1); l=gPad->GetListOfPrimitives();
+ gPad->Divide(2, 1, 0.,0.); l=gPad->GetListOfPrimitives();
xy[0] = 0.; xy[1] = -.8; xy[2] = 12.; xy[3] = 2.3;
- ((TVirtualPad*)l->At(0))->cd();
+ pad = ((TVirtualPad*)l->At(0));pad->cd();
+ pad->SetMargin(0.07, 0.07, 0.1, 0.001);
if(!GetGraphTrackTPC(xy, 10)) break;
-// xy[0]=0.; xy[1]=-0.5; xy[2]=2.; xy[3] =2.5;
-// ((TVirtualPad*)l->At(1))->cd();
-// if(!GetGraphTrackTPC(xy, 11)) break;
+ xy[0]=0.; xy[1]=-1.5; xy[2]=12.; xy[3] =2.5;
+ pad = ((TVirtualPad*)l->At(1)); pad->cd();
+ pad->SetMargin(0.07, 0.07, 0.1, 0.001);
+ if(!GetGraphTrackTPC(xy, 11)) break;
return kTRUE;
case 23: // kMCtrackHMPID [z]
return kTRUE;
aM = fGraphM;aS = fGraphS;
}
for(Int_t ic=0; ic<fNElements[ig]; ic++){
- if(ig==5&&(ic==8||ic==9)){ // TPC momentum plot
+ if(ig==5&&(ic>=8&&ic<=12)){ // TPC momentum plot
aS->AddAt(a = new TObjArray(AliPID::kSPECIES), ic);
for(Int_t is=AliPID::kSPECIES; is--;){
a->AddAt(gs = new TGraphErrors(), is);
gm->SetNameTitle(Form("m_%d%02d%d", ig, ic, is), "");
}
continue;
- } else if(ig==7&&ic==8){ // TRD momentum plot
+ } else if(ig==7&&(ic==8||ic==10)){ // TRD momentum plot
TObjArray *aaS, *aaM;
aS->AddAt(aaS = new TObjArray(AliTRDgeometry::kNlayer), ic);
aM->AddAt(aaM = new TObjArray(AliTRDgeometry::kNlayer), ic);
}
}
- printf("\n\n\n"); fGraphS->ls();
- printf("\n\n\n"); fGraphM->ls();
+/* printf("\n\n\n"); fGraphS->ls();
+ printf("\n\n\n"); fGraphM->ls();*/
// DEFINE MODELS
// gauss on a gauss background
TF1 fc("fc", "[0]*exp(-0.5*((x-[1])/[2])**2)+[3]*exp(-0.5*((x-[4])/[5])**2)", -.5, .5);
-/*
//PROCESS EXPERIMENTAL DISTRIBUTIONS
// Clusters residuals
Process2D(kCluster, 0, &f, 1.e4);
//Process(kMCtrack, 5, &f); // snp PULL
Process2D(kMCtrack, 6, &f, 1.e3); // theta
//Process(kMCtrack, 7, &f); // tgl PULL
-*/
Process4D(kMCtrack, 8, &f, 1.e2); // pt resolution
//Process4D(kMCtrack, 9, &f); // 1/pt pulls
- fNRefFigures = 16;
+ Process4D(kMCtrack, 10, &f, 1.e2); // p resolution
+ fNRefFigures = 17;
// TRACK TPC RESOLUTION/PULLS
Process2D(kMCtrackTPC, 0, &f, 1.e4);// y resolution
Process2D(kMCtrackTPC, 7, &f); // tgl pulls
Process3D(kMCtrackTPC, 8, &f, 1.e2);// pt resolution
Process3D(kMCtrackTPC, 9, &f); // 1/pt pulls
- fNRefFigures = 21;
- return kTRUE;
+ Process3D(kMCtrackTPC, 10, &f, 1.e2);// p resolution
+ Process3D(kMCtrackTPC, 11, &f); // p pulls
+ fNRefFigures = 23;
// TRACK HMPID RESOLUTION/PULLS
Process2D(kMCtrackHMPID, 0, &f, 1.e4); // z towards TOF
Process2D(kMCtrackHMPID, 1, &f); // z towards TOF
- fNRefFigures = 22;
+ fNRefFigures = 24;
return kTRUE;
}
h->Fit(f, "QN");
-/* Int_t ip = g[0]->GetN();
+ Int_t ip = g[0]->GetN();
g[0]->SetPoint(ip, x, k*f->GetParameter(1));
g[0]->SetPointError(ip, 0., k*f->GetParError(1));
g[1]->SetPoint(ip, x, k*f->GetParameter(2));
- g[1]->SetPointError(ip, 0., k*f->GetParError(2));*/
+ g[1]->SetPointError(ip, 0., k*f->GetParError(2));
- Int_t ip = g[0]->GetN();
+/*
g[0]->SetPoint(ip, x, k*h->GetMean());
g[0]->SetPointError(ip, 0., k*h->GetMeanError());
g[1]->SetPoint(ip, x, k*h->GetRMS());
- g[1]->SetPointError(ip, 0., k*h->GetRMSError());
+ g[1]->SetPointError(ip, 0., k*h->GetRMSError());*/
}
fIdxPlot++;
return kTRUE;
//________________________________________________________
-Bool_t AliTRDresolution::GetGraphTrack(Float_t *bb, Int_t il)
+Bool_t AliTRDresolution::GetGraphTrack(Float_t *bb, Int_t idx, Int_t il)
{
if(!fGraphS || !fGraphM) return kFALSE;
TGraphErrors *gm = 0x0, *gs = 0x0;
TObjArray *a0 = fGraphS, *a1 = 0x0;
a1 = (TObjArray*)a0->At(kMCtrack); a0 = a1;
- a1 = (TObjArray*)a0->At(8); a0 = a1;
+ a1 = (TObjArray*)a0->At(idx); a0 = a1;
a1 = (TObjArray*)a0->At(il); a0 = a1;
for(Int_t is=0; is<AliPID::kSPECIES; is++){
if(!(gs = (TGraphErrors*)a0->At(is))) return kFALSE;
+ if(!gs->GetN()) continue;
gs->Draw(is ? "pl" : "apl");
}
gs = (TGraphErrors*)a0->At(0);
// axis titles look up
Int_t nref = 0;
for(Int_t jp=0; jp<Int_t(kMCtrack); jp++) nref+=fNElements[jp];
- for(Int_t jc=0; jc<8; jc++) nref++;
+ for(Int_t jc=0; jc<idx; jc++) nref++;
Char_t **at = fAxTitle[nref];
// axis range
TAxis *ax = gs->GetHistogram()->GetXaxis();
a0 = fGraphM;
a1 = (TObjArray*)a0->At(kMCtrack); a0 = a1;
- a1 = (TObjArray*)a0->At(8); a0 = a1;
+ a1 = (TObjArray*)a0->At(idx); a0 = a1;
a1 = (TObjArray*)a0->At(il); a0 = a1;
for(Int_t is=0; is<AliPID::kSPECIES; is++){
if(!(gm = (TGraphErrors*)a0->At(is))) return kFALSE;
+ if(!gm->GetN()) continue;
gm->Draw("pl");
}
a1 = (TObjArray*)a0->At(sel); a0 = a1;
for(Int_t is=0; is<AliPID::kSPECIES; is++){
if(!(gs = (TGraphErrors*)a0->At(is))) return kFALSE;
+ if(!gs->GetN()) continue;
gs->Draw(is ? "pl" : "apl");
}
gs = (TGraphErrors*)a0->At(0);
a1 = (TObjArray*)a0->At(sel); a0 = a1;
for(Int_t is=0; is<AliPID::kSPECIES; is++){
if(!(gm = (TGraphErrors*)a0->At(is))) return kFALSE;
+ if(!gm->GetN()) continue;
gm->Draw("pl");
}