fVtxXResMax(1.e99),
fVtxYResMax(1.e99),
fVtxZResMax(1.e99),
+ fVtxNCtrbMin(0),
+ fVtxNCtrbMax((Int_t)1.e9),
+ fVtxTPC(0),
+ fVtxSPD(0),
fBitMap(0x0)
{
//
fVtxXResMax(1.e99),
fVtxYResMax(1.e99),
fVtxZResMax(1.e99),
+ fVtxNCtrbMin(0),
+ fVtxNCtrbMax((Int_t)1.e9),
+ fVtxTPC(0),
+ fVtxSPD(0),
fBitMap(0x0)
{
//
fVtxXResMax(c.fVtxXResMax),
fVtxYResMax(c.fVtxYResMax),
fVtxZResMax(c.fVtxZResMax),
+ fVtxNCtrbMin(c.fVtxNCtrbMin),
+ fVtxNCtrbMax(c.fVtxNCtrbMax),
+ fVtxTPC(c.fVtxTPC),
+ fVtxSPD(c.fVtxSPD),
fBitMap(c.fBitMap)
{
//
fVtxXResMax=c.fVtxXResMax;
fVtxYResMax=c.fVtxYResMax;
fVtxZResMax=c.fVtxZResMax;
+ fVtxNCtrbMin=c.fVtxNCtrbMin;
+ fVtxNCtrbMax=c.fVtxNCtrbMax;
+ fVtxTPC=c.fVtxTPC;
+ fVtxSPD=c.fVtxSPD;
fBitMap=c.fBitMap;
}
fBitMap->SetBitNumber(0,kFALSE);
if(fRequireVtxCuts){
- const AliESDVertex* vtxESD = esd->GetVertex();
+ const AliESDVertex* vtxESD = 0x0;
+ if (fVtxTPC) vtxESD = esd->GetPrimaryVertexTPC() ;
+ else if (fVtxSPD) vtxESD = esd->GetPrimaryVertexSPD() ;
+ else vtxESD = esd->GetPrimaryVertexTracks() ;
if(!vtxESD){
for(Int_t j=1;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);
+ AliWarning("Cannot get vertex, skipping event");
return;
}
// Require the vertex to have been reconstructed successfully
if (strcmp(vtxESD->GetName(), "default")==0){
- AliWarning(Form(" No reconstructed vertex found, skip event"));
+ AliWarning(Form(" No reconstructed vertex found, skipping event"));
for(Int_t j=1;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);
return;
}
// Pick up the position and uncertainties
Double_t vtxPos[3];
- vtxPos[0] = vtxESD->GetXv();
- vtxPos[1] = vtxESD->GetYv();
- vtxPos[2] = vtxESD->GetZv();
+ vtxPos[0] = vtxESD->GetX();
+ vtxPos[1] = vtxESD->GetY();
+ vtxPos[2] = vtxESD->GetZ();
Double_t vtxRes[3];
vtxRes[0] = vtxESD->GetXRes();
vtxRes[1] = vtxESD->GetYRes();
vtxRes[2] = vtxESD->GetZRes();
+ Int_t nCtrb = vtxESD->GetNContributors();
+
// Apply the cut
if (vtxPos[0]>fVtxXMax || vtxPos[0]<fVtxXMin)
fBitMap->SetBitNumber(5,kFALSE);
if (vtxRes[2]==0 || vtxRes[2]>fVtxZResMax)
fBitMap->SetBitNumber(6,kFALSE);
+ if (nCtrb<fVtxNCtrbMin || nCtrb>fVtxNCtrbMax)
+ fBitMap->SetBitNumber(7,kFALSE);
+
}
return;
}
fhQA[kNTracks][index]->Fill(nTracks);
//look at vertex parameters:
- const AliESDVertex* vtxESD = esd->GetVertex();
+ const AliESDVertex* vtxESD = 0x0;
+ if (fVtxTPC) vtxESD = esd->GetPrimaryVertexTPC() ;
+ else if (fVtxSPD) vtxESD = esd->GetPrimaryVertexSPD() ;
+ else vtxESD = esd->GetPrimaryVertexTracks() ;
if(!vtxESD)return;
// Require the vertex to have been reconstructed successfully
if (strcmp(vtxESD->GetName(), "default")==0)return;
// vertex position and uncertainties
- fhQA[kVtxPosX][index]->Fill(vtxESD->GetXv());
- fhQA[kVtxPosY][index]->Fill(vtxESD->GetYv());
- fhQA[kVtxPosZ][index]->Fill(vtxESD->GetZv());
- fhQA[kVtxResX][index]->Fill(vtxESD->GetXRes());
- fhQA[kVtxResY][index]->Fill(vtxESD->GetYRes());
- fhQA[kVtxResZ][index]->Fill(vtxESD->GetZRes());
+ fhQA[kVtxPosX] [index]->Fill(vtxESD->GetX());
+ fhQA[kVtxPosY] [index]->Fill(vtxESD->GetY());
+ fhQA[kVtxPosZ] [index]->Fill(vtxESD->GetZ());
+ fhQA[kVtxResX] [index]->Fill(vtxESD->GetXRes());
+ fhQA[kVtxResY] [index]->Fill(vtxESD->GetYRes());
+ fhQA[kVtxResZ] [index]->Fill(vtxESD->GetZRes());
+ fhQA[kVtxNCtrb][index]->Fill(vtxESD->GetNContributors());
}
// book QA histograms
- Char_t str[256];
+ Char_t str[5];
for (Int_t i=0; i<kNStepQA; i++) {
- if (i==0) sprintf(str," ");
- else sprintf(str,"_cut");
+ if (i==0) snprintf(str,5," ");
+ else snprintf(str,5,"_cut");
fhQA[kNTracks][i] = new TH1F(Form("%s_NTracks%s",GetName(),str), "",501,-0.5,500.5);
fhQA[kVtxPosX][i] = new TH1F(Form("%s_Vtx_Pos_X%s",GetName(),str), "",100,-5.,5.);
fhQA[kVtxPosY][i] = new TH1F(Form("%s_Vtx_Pos_Y%s",GetName(),str), "",100,-5.,5.);
fhQA[kVtxPosZ][i] = new TH1F(Form("%s_Vtx_Pos_Z%s",GetName(),str), "",200,-50.,50.);
-
fhQA[kVtxResX][i] = new TH1F(Form("%s_Vtx_Res_X%s",GetName(),str), "",100,-1.,1.);
fhQA[kVtxResY][i] = new TH1F(Form("%s_Vtx_Res_Y%s",GetName(),str), "",100,-1.,1.);
fhQA[kVtxResZ][i] = new TH1F(Form("%s_Vtx_Res_Z%s",GetName(),str), "",100,-1.,1.);
+ fhQA[kVtxNCtrb][i] = new TH1F(Form("%s_Vtx_N_Ctrb%s",GetName(),str), "",1000,0.,1000.);
fhQA[kNTracks][i] ->SetXTitle("Number of ESD tracks");
fhQA[kVtxPosX][i] ->SetXTitle("Vertex Position X (cm)");
fhQA[kVtxResX][i] ->SetXTitle("Vertex Resolution X (cm)");
fhQA[kVtxResY][i] ->SetXTitle("Vertex Resolution Y (cm)");
fhQA[kVtxResZ][i] ->SetXTitle("Vertex Resolution Z (cm)");
-
+ fhQA[kVtxNCtrb][i] ->SetXTitle("Number of contributors");
}
for(Int_t i=0; i<kNCuts; i++) fhQA[i][1]->SetLineColor(color);