//printf(" AliAnaCalorimeterQA::Terminate() *** %s Report:", GetName()) ;
//printf(" AliAnaCalorimeterQA::Terminate() pt : %5.3f , RMS : %5.3f \n", fhPt->GetMean(), fhPt->GetRMS() ) ;
- char name[128];
- char cname[128];
+ const Int_t buffersize = 255;
+ char name[buffersize];
+ char cname[buffersize];
//In case terminate is executed after the analysis, in a second step, and we want to rebin or to change the range of the histograms for plotting
Int_t nptbins = GetHistoPtBins(); Float_t ptmax = GetHistoPtMax(); Float_t ptmin = GetHistoPtMin();
//--------------------------------------------------
// Cluster energy distributions, module dependence
//--------------------------------------------------
- sprintf(cname,"QA_%s_ClusterEnergy",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_ClusterEnergy",fCalorimeter.Data());
TCanvas * c = new TCanvas(cname, "Energy distributions", 800, 400) ;
c->Divide(2, 1);
Int_t rbE = GetNewRebinForRePlotting((TH1D*)fhE, ptmin, ptmax,nptbins) ;
}
pLegendER.Draw();
- sprintf(name,"QA_%s_ClusterEnergy.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterEnergy.eps",fCalorimeter.Data());
c->Print(name); printf("Plot: %s\n",name);
//--------------------------------------------------
// Cell energy distributions, module dependence
//--------------------------------------------------
- sprintf(cname,"%s_QA_CellEnergy",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_CellEnergy",fCalorimeter.Data());
TCanvas * ca = new TCanvas(cname, "Cell Energy distributions", 800, 400) ;
ca->Divide(2, 1);
}
pLegendAR.Draw();
- sprintf(name,"QA_%s_CellEnergy.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellEnergy.eps",fCalorimeter.Data());
ca->Print(name); printf("Plot: %s\n",name);
//----------------------------------------------------------
//---------------------------------------------------------
if(fCalorimeter=="EMCAL"){
//Close To Eta 0
- sprintf(cname,"%s_QA_SMThirds",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_SMThirds",fCalorimeter.Data());
TCanvas * cfrac = new TCanvas(cname, "SM Thirds ratios", 800, 1200) ;
cfrac->Divide(2, 3);
cfrac->cd(1) ;
}
//pLegend3.Draw();
- sprintf(name,"QA_%s_CellEnergyModuleFraction.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellEnergyModuleFraction.eps",fCalorimeter.Data());
cfrac->Print(name); printf("Create plot %s\n",name);
}//EMCAL
// Cluster eta and phi distributions, energy cut dependence
//---------------------------------------------------------
- sprintf(cname,"%s_QA_EtaPhiCluster",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_EtaPhiCluster",fCalorimeter.Data());
TCanvas * cetaphic = new TCanvas(cname, "Eta-Phi Reconstructed distributions", 1200, 400) ;
cetaphic->Divide(3, 1);
Int_t binmin = 0;
cetaphic->cd(2) ;
gPad->SetLogy();
gPad->SetGridy();
-
+
htmp = fhEtaPhiE->ProjectionX("heta_cluster_nocut",0,-1,0,-1);
htmp ->SetLineColor(1);
rbEta = GetNewRebinForRePlotting(htmp,etamin, etamax,netabins) ;
hEtaPhiCl->SetAxisRange(phimin,phimax,"Y");
hEtaPhiCl->Draw("colz");
- sprintf(name,"QA_%s_ClusterEtaPhi.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterEtaPhi.eps",fCalorimeter.Data());
cetaphic->Print(name); printf("Create plot %s\n",name);
//----------------------------------------------------------
// Cell eta and phi distributions, energy cut dependence
//---------------------------------------------------------
- sprintf(cname,"%s_QA_EtaPhiCell",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_EtaPhiCell",fCalorimeter.Data());
TCanvas * cetaphicell = new TCanvas(cname, "Eta-Phi Cells distributions", 1200, 400) ;
cetaphicell->Divide(3, 1);
hEtaPhiCell->SetAxisRange(phimin,phimax,"Y");
hEtaPhiCell->Draw("colz");
- sprintf(name,"QA_%s_CellEtaPhi.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellEtaPhi.eps",fCalorimeter.Data());
cetaphicell->Print(name); printf("Create plot %s\n",name);
Int_t rbZ = 1;
//if(fFillAllPosHisto)
{
- sprintf(cname,"%s_QA_ClusterXY",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_ClusterXY",fCalorimeter.Data());
TCanvas * cxyz = new TCanvas(cname, "Cluster XY distributions", 1200, 400) ;
cxyz->Divide(3, 1);
hXZ->GetYaxis()->SetTitleOffset(1.6);
hXZ->Draw("colz");
- sprintf(name,"QA_%s_ClusterXY_YZ_XZ.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterXY_YZ_XZ.eps",fCalorimeter.Data());
cxyz->Print(name); printf("Create plot %s\n",name);
- sprintf(cname,"QA_%s_ClusterX",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_ClusterX",fCalorimeter.Data());
TCanvas * cx = new TCanvas(cname, "Cluster X distributions", 1200, 400) ;
cx->Divide(3, 1);
hZ->SetAxisRange(zmin,zmax);
hZ->Draw("HE");
- sprintf(name,"QA_%s_ClusterX_Y_Z.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterX_Y_Z.eps",fCalorimeter.Data());
cx->Print(name); printf("Create plot %s\n",name);
}
//CELLS
if(fFillAllPosHisto)
{
- sprintf(cname,"%s_QA_CellXY",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_CellXY",fCalorimeter.Data());
TCanvas * cellxyz = new TCanvas(cname, "Cell XY distributions", 1200, 400) ;
cellxyz->Divide(3, 1);
hXZCell->GetYaxis()->SetTitleOffset(1.6);
hXZCell->Draw("colz");
- sprintf(name,"QA_%s_CellXY_YZ_XZ.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellXY_YZ_XZ.eps",fCalorimeter.Data());
cellxyz->Print(name); printf("Create plot %s\n",name);
- sprintf(cname,"%s_QA_CellX",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_CellX",fCalorimeter.Data());
TCanvas * cellx = new TCanvas(cname, "Cell X distributions", 1200, 400) ;
cellx->Divide(3, 1);
hZCell->SetMinimum(hZCell->GetMaximum()/2);
hZCell->Draw("HE");
- sprintf(name,"QA_%s_CellX_Y_Z.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellX_Y_Z.eps",fCalorimeter.Data());
cellx->Print(name); printf("Create plot %s\n",name);
// Cluster X, Y, Z, R, energy cut dependence
//---------------------------------------------------------
- sprintf(cname,"%s_QA_ClusterX_Y_Z_R_ECut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_ClusterX_Y_Z_R_ECut",fCalorimeter.Data());
TCanvas * cxe = new TCanvas(cname, "Cluster X Y Z R, E cut", 800, 800) ;
cxe->Divide(2, 2);
//R
}
}
- sprintf(name,"QA_%s_ClusterX_Y_Z_R_ECut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterX_Y_Z_R_ECut.eps",fCalorimeter.Data());
cxe->Print(name); printf("Create plot %s\n",name);
//---------------------------------------------------------
Int_t ncellcut[]={2, 3, 4};
Int_t ncellcuts = 3;
- sprintf(cname,"%s_QA_ClusterX_Y_Z_R_NCellsCut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_ClusterX_Y_Z_R_NCellsCut",fCalorimeter.Data());
TCanvas * cxn = new TCanvas(cname, "Cluster X Y Z R, NCells cut", 800, 800) ;
cxn->Divide(2, 2);
//R
}
}
- sprintf(name,"QA_%s_ClusterX_Y_Z_R_NCellsCut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterX_Y_Z_R_NCellsCut.eps",fCalorimeter.Data());
cxn->Print(name); printf("Create plot %s\n",name);
// Cell X, Y, Z, R, energy cut dependence
//---------------------------------------------------------
- sprintf(cname,"%s_QA_CellX_Y_Z_R_ECut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_CellX_Y_Z_R_ECut",fCalorimeter.Data());
TCanvas * cxecell = new TCanvas(cname, "Cell X Y Z R, E cut", 800, 800) ;
cxecell->Divide(2, 2);
//R
htmp->Draw("same HE");
}
}
- sprintf(name,"QA_%s_CellX_Y_Z_R_ECut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellX_Y_Z_R_ECut.eps",fCalorimeter.Data());
cxecell->Print(name); printf("Create plot %s\n",name);
Int_t rbDY= 1;//rbY;
Int_t rbDZ= 1;//rbZ;
- sprintf(cname,"%s_QA_DeltaClusterCellX_Y_Z_R_ECut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_DeltaClusterCellX_Y_Z_R_ECut",fCalorimeter.Data());
TCanvas * cxde = new TCanvas(cname, "Cluster-Cell X, Y, Z, R, E cut", 800, 800) ;
cxde->Divide(2, 2);
//R
}
}
- sprintf(name,"QA_%s_DeltaClusterCellX_Y_Z_R_ECut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_DeltaClusterCellX_Y_Z_R_ECut.eps",fCalorimeter.Data());
cxde->Print(name); printf("Create plot %s\n",name);
//----------------------------------------------------------
// Cluster-Cell X, Y, Z, R, NCells in cluster dependence
//---------------------------------------------------------
- sprintf(cname,"%s_QA_DeltaClusterCellX_Y_Z_R_NCellsCut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_DeltaClusterCellX_Y_Z_R_NCellsCut",fCalorimeter.Data());
TCanvas * cxdn = new TCanvas(cname, "Cluster-Cell X Y Z R, NCells cut", 800, 800) ;
cxdn->Divide(2, 2);
//R
}
}
- sprintf(name,"QA_%s_DeltaClusterCellX_Y_Z_R_NCellsCut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_DeltaClusterCellX_Y_Z_R_NCellsCut.eps",fCalorimeter.Data());
cxdn->Print(name); printf("Create plot %s\n",name);
}
hEtaChargedClone = (TH1F*) fhEtaCharged->Clone(Form("%sClone",fhEtaCharged->GetName()));
hPhiChargedClone = (TH1F*) fhPhiCharged->Clone(Form("%sClone",fhPhiCharged->GetName()));
- sprintf(cname,"QA_%s_rectrackmatch",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_rectrackmatch",fCalorimeter.Data());
TCanvas * ccltm = new TCanvas(cname, "Reconstructed clusters E-Phi-Eta, matched with tracks", 1200, 400) ;
ccltm->Divide(3, 1);
fhEtaCharged->Draw();
fhEtaCharged->Draw();
- sprintf(name,"QA_%s_ClusterEnergyPhiEta_TrackMatched.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClusterEnergyPhiEta_TrackMatched.eps",fCalorimeter.Data());
ccltm->Print(name); printf("Plot: %s\n",name);
//----------------------------------------------------------
// Ratio of reconstructed clusters energy-eta-phi distributions, matched with tracks over all
//----------------------------------------------------------
- sprintf(cname,"%s_QA_ChargedRatio",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_ChargedRatio",fCalorimeter.Data());
TCanvas * ccharge = new TCanvas(cname, "Charged clusters over all clusters", 1200, 400) ;
ccharge->Divide(3, 1);
fhEtaCharged->SetYTitle("track-matched clusters / all clusters");
fhEtaCharged->Draw("HE");
- sprintf(name,"QA_%s_ClustersMatchedToAllRatios.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ClustersMatchedToAllRatios.eps",fCalorimeter.Data());
ccharge->Print(name); printf("Create plot %s\n",name);
}
//-------------------------------------------
// N Cells - N Clusters - N Cells per cluster
//-------------------------------------------
- sprintf(cname,"QA_%s_nclustercells",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_nclustercells",fCalorimeter.Data());
TCanvas * cN = new TCanvas(cname, " Number of CaloClusters and CaloCells", 800, 1200) ;
cN->Divide(2, 3);
else
htmp->Draw("same HE");
+ delete [] hNCellsCluster1D;
+
}
- sprintf(name,"QA_%s_NumberCaloClustersAndCaloCells.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_NumberCaloClustersAndCaloCells.eps",fCalorimeter.Data());
cN->Print(name); printf("Print plot %s\n",name);
//----------------------------------------------------
//----------------------------------------------------
if(GetReader()->GetDataType()==AliCaloTrackReader::kESD) {
- sprintf(cname,"QA_%s_cellstime",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_cellstime",fCalorimeter.Data());
TCanvas * ctime = new TCanvas(cname, " Cells time", 1200, 400) ;
ctime->Divide(3, 1);
fhTimeAmp->SetAxisRange(ptmin,ptmax,"X");
fhTimeAmp->Draw("colz");
- sprintf(name,"QA_%s_CellsTime.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CellsTime.eps",fCalorimeter.Data());
ctime->Print(name); printf("Plot: %s\n",name);
}
{
//Number of entries per cell
gStyle->SetPadRightMargin(0.15);
- sprintf(cname,"%s_QA_GridCellEntries",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_GridCellEntries",fCalorimeter.Data());
TCanvas *cgrid = new TCanvas("cgrid","Number of entries per cell", 12,12,800,400);
if(fNModules%2 == 0)
cgrid->Divide(fNModules/2,2);
//fhGridCellsMod[imod]->SetLabelSize(0.025,"z");
fhGridCellsMod[imod]->Draw("colz");
}
- sprintf(name,"QA_%s_GridCellsEntries.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GridCellsEntries.eps",fCalorimeter.Data());
cgrid->Print(name); printf("Create plot %s\n",name);
- sprintf(cname,"%s_QA_GridCellAccumEnergy",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_GridCellAccumEnergy",fCalorimeter.Data());
TCanvas *cgridE = new TCanvas("cgridE","Summed energy per cell", 12,12,800,400);
if(fNModules%2 == 0)
cgridE->Divide(fNModules/2,2);
fhGridCellsEMod[imod]->SetYTitle("row (phi direction) ");
fhGridCellsEMod[imod]->Draw("colz");
}
- sprintf(name,"QA_%s_GridCellsAccumEnergy.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GridCellsAccumEnergy.eps",fCalorimeter.Data());
cgridE->Print(name); printf("Create plot %s\n",name);
//Accumulated energy per cell
- sprintf(cname,"%s_QA_GridCellAverageEnergy",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_GridCellAverageEnergy",fCalorimeter.Data());
TCanvas *cgridEA = new TCanvas("cgridEA","Average energy per cell", 12,12,800,400);
if(fNModules%2 == 0)
cgridEA->Divide(fNModules/2,2);
fhGridCellsEMod[imod]->Divide(fhGridCellsMod[imod]);
fhGridCellsEMod[imod]->Draw("colz");
}
- sprintf(name,"QA_%s_GridCellsAverageEnergy.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GridCellsAverageEnergy.eps",fCalorimeter.Data());
cgridEA->Print(name); printf("Create plot %s\n",name);
//Accumulated Time per cell, E > 0.5 GeV
- sprintf(cname,"%s_QA_GridCellAccumTime",fCalorimeter.Data());
+ snprintf(cname,buffersize,"%s_QA_GridCellAccumTime",fCalorimeter.Data());
TCanvas *cgridT = new TCanvas("cgridT","Summed time per cell", 12,12,800,400);
if(fNModules%2 == 0)
cgridT->Divide(fNModules/2,2);
fhGridCellsTimeMod[imod]->SetYTitle("row (phi direction) ");
fhGridCellsTimeMod[imod]->Draw("colz");
}
- sprintf(name,"QA_%s_GridCellsAccumTime.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GridCellsAccumTime.eps",fCalorimeter.Data());
cgridT->Print(name); printf("Create plot %s\n",name);
}
//---------------------------------------------
if(fCorrelateCalos){
- sprintf(cname,"QA_%s_CaloCorr_EMCALvsPHOS",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_CaloCorr_EMCALvsPHOS",fCalorimeter.Data());
TCanvas * ccorr = new TCanvas(cname, " EMCAL vs PHOS", 400, 400) ;
ccorr->Divide(2, 2);
fhCaloCorrECells->SetAxisRange(ptmin,ptmax,"Y");
fhCaloCorrECells->Draw();
- sprintf(name,"QA_%s_CaloCorr_EMCALvsPHOS.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_CaloCorr_EMCALvsPHOS.eps",fCalorimeter.Data());
ccorr->Print(name); printf("Plot: %s\n",name);
}
if (emin != 0 ) printf("emin != 0 \n");
//printf("IM: nBinsX %d, emin %2.2f, emax %2.2f\n",nebins,emin,emax);
- sprintf(cname,"QA_%s_IM",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_IM",fCalorimeter.Data());
// printf("c5\n");
TCanvas * c5 = new TCanvas(cname, "Invariant mass", 600, 400) ;
c5->Divide(2, 3);
pyim10->Draw("same");
}
- sprintf(name,"QA_%s_InvariantMass.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_InvariantMass.eps",fCalorimeter.Data());
c5->Print(name); printf("Plot: %s\n",name);
}
if (emin != 0 ) printf("emin != 0 \n");
//printf("IMCellCut: nBinsX %d, emin %2.2f, emax %2.2f\n",nebins,emin,emax);
- sprintf(cname,"QA_%s_IMCellCut",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_IMCellCut",fCalorimeter.Data());
// printf("c5cc\n");
TCanvas * c5cc = new TCanvas(cname, "Invariant mass, Cell Cut", 600, 400) ;
c5cc->Divide(2, 3);
pyimcc10->Draw("same");
}
- sprintf(name,"QA_%s_InvariantMass_CellCut.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_InvariantMass_CellCut.eps",fCalorimeter.Data());
c5cc->Print(name); printf("Plot: %s\n",name);
}
if (emin != 0 ) printf("emin != 0 \n");
//printf("Asym: nBinsX %d, emin %2.2f, emax %2.2f\n",nebins,emin,emax);
- sprintf(cname,"QA_%s_Asym",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_Asym",fCalorimeter.Data());
// printf("c5\n");
TCanvas * c5b = new TCanvas(cname, "Asymmetry", 400, 400) ;
c5b->Divide(2, 2);
pyAsym10->SetLineColor(4);
pyAsym10->Draw();
- sprintf(name,"QA_%s_Asymmetry.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_Asymmetry.eps",fCalorimeter.Data());
c5b->Print(name); printf("Plot: %s\n",name);
}
if(IsDataMC()){
//Reconstructed vs MC distributions
//printf("c6\n");
- sprintf(cname,"QA_%s_recvsmc",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_recvsmc",fCalorimeter.Data());
TCanvas * c6 = new TCanvas(cname, "Reconstructed vs MC distributions", 400, 400) ;
c6->Divide(2, 2);
fh2Eta->SetLineColor(4);
fh2Eta->Draw();
- sprintf(name,"QA_%s_ReconstructedVSMCDistributions.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ReconstructedVSMCDistributions.eps",fCalorimeter.Data());
c6->Print(name); printf("Plot: %s\n",name);
//Reconstructed vs MC distributions
//printf("c6\n");
- sprintf(cname,"QA_%s_gamrecvsmc",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_gamrecvsmc",fCalorimeter.Data());
TCanvas * c6Gam = new TCanvas(cname, "Reconstructed vs MC distributions", 400, 400) ;
c6Gam->Divide(2, 2);
c6Gam->cd(4) ;
fhGamEta->Draw();
- sprintf(name,"QA_%s_GammaReconstructedVSMCDistributions.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GammaReconstructedVSMCDistributions.eps",fCalorimeter.Data());
c6->Print(name); printf("Plot: %s\n",name);
//Generated - reconstructed
//printf("c7\n");
- sprintf(cname,"QA_%s_diffgenrec",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_diffgenrec",fCalorimeter.Data());
TCanvas * c7 = new TCanvas(cname, "generated - reconstructed", 400, 400) ;
c7->Divide(2, 2);
fhDeltaEta->Draw();
fhGamDeltaEta->Draw("same");
- sprintf(name,"QA_%s_DiffGeneratedReconstructed.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_DiffGeneratedReconstructed.eps",fCalorimeter.Data());
c7->Print(name); printf("Plot: %s\n",name);
// Reconstructed / Generated
//printf("c8\n");
- sprintf(cname,"QA_%s_ratiorecgen",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_ratiorecgen",fCalorimeter.Data());
TCanvas * c8 = new TCanvas(cname, " reconstructed / generated", 400, 400) ;
c8->Divide(2, 2);
fhRatioEta->Draw();
fhGamRatioEta->Draw("same");
- sprintf(name,"QA_%s_ReconstructedDivGenerated.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ReconstructedDivGenerated.eps",fCalorimeter.Data());
c8->Print(name); printf("Plot: %s\n",name);
//MC
//Generated distributions
//printf("c1\n");
- sprintf(cname,"QA_%s_gen",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_gen",fCalorimeter.Data());
TCanvas * c10 = new TCanvas(cname, "Generated distributions", 600, 200) ;
c10->Divide(3, 1);
fhGenOmegaPhi->Draw("same");
fhGenElePhi->Draw("same");
- sprintf(name,"QA_%s_GeneratedDistributions.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_GeneratedDistributions.eps",fCalorimeter.Data());
c10->Print(name); printf("Plot: %s\n",name);
//Reconstructed clusters depending on its original particle.
//printf("c1\n");
- sprintf(cname,"QA_%s_recgenid",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_recgenid",fCalorimeter.Data());
TCanvas * c11 = new TCanvas(cname, "Reconstructed particles, function of their original particle ID", 400, 400) ;
c11->Divide(2, 2);
hChHadPhi->Draw("same");
hElePhi->Draw("same");
- sprintf(name,"QA_%s_RecDistributionsGenID.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_RecDistributionsGenID.eps",fCalorimeter.Data());
c11->Print(name); printf("Plot: %s\n",name);
TH1F * hPi0PhiClone = (TH1F*) hPi0Phi->Clone(Form("%s_Clone",fhPi0Phi->GetName()));
TH1F * hGamPhiClone = (TH1F*) hGamPhi->Clone(Form("%s_Clone",fhGamPhi->GetName()));
- sprintf(cname,"QA_%s_recgenidratio",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_recgenidratio",fCalorimeter.Data());
TCanvas * c12 = new TCanvas(cname, "Ratio reconstructed clusters / generated particles in acceptance, for different particle ID", 400, 400) ;
c12->Divide(2, 2);
hPi0PhiClone->Draw("same");
hGamPhiClone->Draw("same");
- sprintf(name,"QA_%s_EfficiencyGenID.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_EfficiencyGenID.eps",fCalorimeter.Data());
c12->Print(name); printf("Plot: %s\n",name);
//Reconstructed distributions
//printf("c1\n");
- sprintf(cname,"QA_%s_vertex",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_vertex",fCalorimeter.Data());
TCanvas * c13 = new TCanvas(cname, "Particle vertex", 400, 400) ;
c13->Divide(2, 2);
hHaR->Draw();
- sprintf(name,"QA_%s_ParticleVertex.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ParticleVertex.eps",fCalorimeter.Data());
c13->Print(name); printf("Plot: %s\n",name);
if(fFillAllTH12){
//Reconstructed distributions, matched with tracks, generated particle dependence
//printf("c2\n");
- sprintf(cname,"QA_%s_rectrackmatchGenID",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_rectrackmatchGenID",fCalorimeter.Data());
TCanvas * c22ch = new TCanvas(cname, "Reconstructed distributions, matched with tracks, for different particle ID", 400, 400) ;
c22ch->Divide(2, 2);
hElePhiCharged->Draw("same");
- sprintf(name,"QA_%s_ReconstructedDistributions_TrackMatchedGenID.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_ReconstructedDistributions_TrackMatchedGenID.eps",fCalorimeter.Data());
c22ch->Print(name); printf("Plot: %s\n",name);
TH1F * hGamEChargedClone = (TH1F*) hGamECharged->Clone(Form("%s_Clone",fhGamECharged->GetName()));
//Ratio: reconstructed track matched/ all reconstructed
//printf("c3\n");
- sprintf(cname,"QA_%s_rectrackmatchratGenID",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_rectrackmatchratGenID",fCalorimeter.Data());
TCanvas * c3ch = new TCanvas(cname, "Ratio: reconstructed track matched/ all reconstructed, for different particle ID", 400, 400) ;
c3ch->Divide(2, 2);
hNeHadPhiChargedClone->Draw("same");
hChHadPhiChargedClone->Draw("same");
- sprintf(name,"QA_%s_RatioReconstructedMatchedDistributionsGenID.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_RatioReconstructedMatchedDistributionsGenID.eps",fCalorimeter.Data());
c3ch->Print(name); printf("Plot: %s\n",name);
}
}
//Track-matching distributions
- sprintf(cname,"QA_%s_trkmatch",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_trkmatch",fCalorimeter.Data());
TCanvas *cme = new TCanvas(cname,"Track-matching distributions", 400, 400);
cme->Divide(2,2);
cme->cd(4);
fh2EledEdx->Draw();
- sprintf(name,"QA_%s_TrackMatchingEleDist.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_TrackMatchingEleDist.eps",fCalorimeter.Data());
cme->Print(name); printf("Plot: %s\n",name);
if(IsDataMC()){
- sprintf(cname,"QA_%s_trkmatchMCEle",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_trkmatchMCEle",fCalorimeter.Data());
TCanvas *cmemc = new TCanvas(cname,"Track-matching distributions from MC electrons", 600, 200);
cmemc->Divide(3,1);
cmemc->cd(3);
fhMCEle2MatchdEdx->Draw();
- sprintf(name,"QA_%s_TrackMatchingDistMCEle.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_TrackMatchingDistMCEle.eps",fCalorimeter.Data());
cmemc->Print(name); printf("Plot: %s\n",name);
- sprintf(cname,"QA_%s_trkmatchMCChHad",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_trkmatchMCChHad",fCalorimeter.Data());
TCanvas *cmemchad = new TCanvas(cname,"Track-matching distributions from MC charged hadrons", 600, 200);
cmemchad->Divide(3,1);
cmemchad->cd(3);
fhMCChHad2MatchdEdx->Draw();
- sprintf(name,"QA_%s_TrackMatchingDistMCChHad.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_TrackMatchingDistMCChHad.eps",fCalorimeter.Data());
cmemchad->Print(name); printf("Plot: %s\n",name);
- sprintf(cname,"QA_%s_trkmatchMCNeutral",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_trkmatchMCNeutral",fCalorimeter.Data());
TCanvas *cmemcn = new TCanvas(cname,"Track-matching distributions from MC neutrals", 600, 200);
cmemcn->Divide(3,1);
cmemcn->cd(3);
fhMCNeutral2MatchdEdx->Draw();
- sprintf(name,"QA_%s_TrackMatchingDistMCNeutral.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_TrackMatchingDistMCNeutral.eps",fCalorimeter.Data());
cmemcn->Print(name); printf("Plot: %s\n",name);
- sprintf(cname,"QA_%s_trkmatchpE",fCalorimeter.Data());
+ snprintf(cname,buffersize,"QA_%s_trkmatchpE",fCalorimeter.Data());
TCanvas *cmpoe = new TCanvas(cname,"Track-matching distributions, p/E", 400, 200);
cmpoe->Divide(2,1);
// pLegendpE2.SetBorderSize(1);
// pLegendpE2.Draw();
- sprintf(name,"QA_%s_TrackMatchingPOverE.eps",fCalorimeter.Data());
+ snprintf(name,buffersize,"QA_%s_TrackMatchingPOverE.eps",fCalorimeter.Data());
cmpoe->Print(name); printf("Plot: %s\n",name);
}
- char line[1024] ;
- sprintf(line, ".!tar -zcf QA_%s_%s.tar.gz *%s*.eps", fCalorimeter.Data(), GetName(),fCalorimeter.Data()) ;
+ char line[buffersize] ;
+ snprintf(line, buffersize,".!tar -zcf QA_%s_%s.tar.gz *%s*.eps", fCalorimeter.Data(), GetName(),fCalorimeter.Data()) ;
gROOT->ProcessLine(line);
- sprintf(line, ".!rm -fR *.eps");
+ snprintf(line, buffersize,".!rm -fR *.eps");
gROOT->ProcessLine(line);
printf("AliAnaCalorimeterQA::Terminate() - !! All the eps files are in QA_%s_%s.tar.gz !!!\n", fCalorimeter.Data(), GetName());
void AliAnaElectron::MakeAnalysisFillHistograms() \r
{\r
//Do analysis and fill histograms\r
-\r
+ \r
AliStack * stack = 0x0;\r
TParticle * primary = 0x0;\r
AliAODMCParticle * aodprimary = 0x0;\r
-\r
+ \r
Int_t ph1 = 0; //photonic 1 count\r
Int_t ph2 = 0; //photonic 2 count\r
Int_t phB = 0; //both count\r
-\r
+ \r
if(IsDataMC()) {\r
if(GetReader()->ReadStack()){\r
stack = GetMCStack() ; \r
- if(!stack)\r
- printf("AliAnaElectron::MakeAnalysisFillHistograms() *** no stack ***: \n");\r
+ if(!stack){\r
+ printf("AliAnaElectron::MakeAnalysisFillHistograms() *** no stack ***: \n");\r
+ }\r
\r
}\r
}// is data and MC\r
-\r
+ \r
////////////////////////////////////\r
//Loop over jets and check for b-tag\r
////////////////////////////////////\r
Int_t njets = (GetReader()->GetOutputEvent())->GetNJets();\r
if(njets > 0) {\r
if(GetDebug() > 0) printf("AliAnaElectron::MakeAnalysisFillHistograms() - Jet AOD branch has %d jets. Performing b-jet tag analysis\n",njets);\r
-\r
+ \r
for(Int_t ijet = 0; ijet < njets ; ijet++) {\r
AliAODJet * jet = (AliAODJet*)(GetReader()->GetOutputEvent())->GetJet(ijet) ;\r
//Only consider jets with pt > 10 GeV (the rest have to be junk)\r
//printf("AODJet<%d> pt = %2.2f\n",ijet,jet->Pt());\r
if(jet->Pt() < 10.) continue;\r
-\r
+ \r
if(GetDebug() > 3) {\r
- printf("AliAODJet ijet = %d\n",ijet);\r
- jet->Print("");\r
+ printf("AliAODJet ijet = %d\n",ijet);\r
+ jet->Print("");\r
}\r
//Skip jets not inside a smaller fiducial volume to ensure that\r
//they are completely contained in the EMCAL\r
if(TMath::Abs(jet->Eta()) > fJetEtaCut) continue;\r
if(jet->Phi() < fJetPhiMin || jet->Phi() > fJetPhiMax) continue;\r
-\r
+ \r
//To "tag" the jet, we will look for it to pass our various criteria\r
//For e jet tag, we just look to see which ones have NPEs\r
//For DVM jet tag, we will look for DVM electrons\r
Int_t trackCounter[4] = {0,0,0,0}; //for ipsig\r
for(Int_t itrk = 0; itrk < ntrk; itrk++) {\r
AliAODTrack* jetTrack = (AliAODTrack*)jet->GetTrack(itrk);\r
- if( GetIPSignificance(jetTrack, jet->Phi()) > fIPSigCut) trackCounter[0]++;\r
+ if( GetIPSignificance(jetTrack, jet->Phi()) > fIPSigCut) trackCounter[0]++;\r
if( GetIPSignificance(jetTrack, jet->Phi()) > 4.) trackCounter[1]++;\r
if( GetIPSignificance(jetTrack, jet->Phi()) > 3.) trackCounter[2]++;\r
if( GetIPSignificance(jetTrack, jet->Phi()) > 2.) trackCounter[3]++;\r
- Bool_t isNPE = CheckTrack(jetTrack,"NPE");\r
- if(isNPE) eJet = kTRUE;\r
- if ( isNPE && jetTrack->Pt()>10.0 ) eJet2 =kTRUE;\r
+ Bool_t isNPE = CheckTrack(jetTrack,"NPE");\r
+ if(isNPE) eJet = kTRUE;\r
+ if ( isNPE && jetTrack->Pt()>10.0 ) eJet2 =kTRUE;\r
if (!isNPE && jetTrack->Pt()>10.0) hadJet =kTRUE;\r
- Bool_t isDVM = CheckTrack(jetTrack,"DVM");\r
- if(isDVM) dvmJet = kTRUE;\r
+ Bool_t isDVM = CheckTrack(jetTrack,"DVM");\r
+ if(isDVM) dvmJet = kTRUE;\r
}\r
fhIPSigBtagQA1->Fill(trackCounter[0]);\r
if(trackCounter[1]>0) fhTagJetPt1x4->Fill(jet->Pt());\r
if(trackCounter[2]>1) fhTagJetPt2x3->Fill(jet->Pt());\r
if(trackCounter[3]>2) fhTagJetPt3x2->Fill(jet->Pt());\r
-\r
+ \r
if(trackCounter[1]>0 && eJet) fhePlusTagJetPt1x4->Fill(jet->Pt());\r
if(trackCounter[2]>1 && eJet) fhePlusTagJetPt2x3->Fill(jet->Pt());\r
if(trackCounter[3]>2 && eJet) fhePlusTagJetPt3x2->Fill(jet->Pt());\r
-\r
+ \r
if(trackCounter[0] > fNTagTrkCut) ipsigJet = kTRUE;\r
-\r
+ \r
if(IsDataMC()) {\r
- //determine tagging efficiency & mis-tagging rate\r
- //using b-quarks from stack\r
- Bool_t isTrueBjet = IsMcBJet(jet->Eta(), jet->Phi());\r
- Bool_t isTrueDjet = IsMcDJet(jet->Eta(), jet->Phi());\r
- if (isTrueBjet && GetDebug() > 0) printf("== True Bjet==\n");\r
- if (isTrueDjet && GetDebug() > 0) printf("== True Charm-jet==\n");\r
- if (dvmJet && GetDebug() > 0) printf("== found DVM jet==\n");\r
-\r
- if(isTrueBjet && dvmJet) fhDVMJet->Fill(0.,jet->Pt()); // good tagged\r
- if(isTrueBjet && !dvmJet) fhDVMJet->Fill(1.,jet->Pt()); // missed tagged\r
- if(!isTrueBjet && dvmJet) fhDVMJet->Fill(2.,jet->Pt()); // fake tagged\r
- if(!isTrueBjet && !dvmJet) fhDVMJet->Fill(3.,jet->Pt()); // others\r
+ //determine tagging efficiency & mis-tagging rate\r
+ //using b-quarks from stack\r
+ Bool_t isTrueBjet = IsMcBJet(jet->Eta(), jet->Phi());\r
+ Bool_t isTrueDjet = IsMcDJet(jet->Eta(), jet->Phi());\r
+ if (isTrueBjet && GetDebug() > 0) printf("== True Bjet==\n");\r
+ if (isTrueDjet && GetDebug() > 0) printf("== True Charm-jet==\n");\r
+ if (dvmJet && GetDebug() > 0) printf("== found DVM jet==\n");\r
+ \r
+ if(isTrueBjet && dvmJet) fhDVMJet->Fill(0.,jet->Pt()); // good tagged\r
+ if(isTrueBjet && !dvmJet) fhDVMJet->Fill(1.,jet->Pt()); // missed tagged\r
+ if(!isTrueBjet && dvmJet) fhDVMJet->Fill(2.,jet->Pt()); // fake tagged\r
+ if(!isTrueBjet && !dvmJet) fhDVMJet->Fill(3.,jet->Pt()); // others\r
if(isTrueDjet && !isTrueBjet && dvmJet) fhDVMJet->Fill(4.,jet->Pt()); // charm-tagged\r
if(isTrueDjet && !isTrueBjet && !dvmJet) fhDVMJet->Fill(5.,jet->Pt()); // charm -not tagged\r
if(!(isTrueDjet||isTrueBjet ) && dvmJet) fhDVMJet->Fill(6.,jet->Pt()); // light flavor -tagged\r
if(!(isTrueDjet||isTrueBjet ) && !dvmJet) fhDVMJet->Fill(7.,jet->Pt()); // light flavor -not tagged\r
- if(isTrueBjet && eJet && dvmJet) fhDVMJet->Fill(8.,jet->Pt()); // bjet with electron\r
+ if(isTrueBjet && eJet && dvmJet) fhDVMJet->Fill(8.,jet->Pt()); // bjet with electron\r
if(isTrueBjet && !eJet && dvmJet) fhDVMJet->Fill(9.,jet->Pt()); // needs more thought\r
-\r
- if(isTrueBjet) {\r
- if(trackCounter[1]>0) fhBJetPt1x4->Fill(jet->Pt());\r
- if(trackCounter[2]>1) fhBJetPt2x3->Fill(jet->Pt());\r
- if(trackCounter[3]>2) fhBJetPt3x2->Fill(jet->Pt());\r
- } else {\r
- if(trackCounter[1]>0) fhFakeJetPt1x4->Fill(jet->Pt());\r
- if(trackCounter[2]>1) fhFakeJetPt2x3->Fill(jet->Pt());\r
- if(trackCounter[3]>2) fhFakeJetPt3x2->Fill(jet->Pt());\r
- }\r
+ \r
+ if(isTrueBjet) {\r
+ if(trackCounter[1]>0) fhBJetPt1x4->Fill(jet->Pt());\r
+ if(trackCounter[2]>1) fhBJetPt2x3->Fill(jet->Pt());\r
+ if(trackCounter[3]>2) fhBJetPt3x2->Fill(jet->Pt());\r
+ } else {\r
+ if(trackCounter[1]>0) fhFakeJetPt1x4->Fill(jet->Pt());\r
+ if(trackCounter[2]>1) fhFakeJetPt2x3->Fill(jet->Pt());\r
+ if(trackCounter[3]>2) fhFakeJetPt3x2->Fill(jet->Pt());\r
+ }\r
}\r
-\r
+ \r
//Fill bjet histograms here\r
if(!(eJet || ipsigJet || dvmJet)) fhJetType->Fill(0.,jet->Pt()); //none\r
if(eJet && !(ipsigJet || dvmJet)) fhJetType->Fill(1.,jet->Pt()); //only ejet\r
if(dvmJet) fhJetType->Fill(10.,jet->Pt()); //any of them\r
if(eJet2 ) fhJetType->Fill(11.,jet->Pt()); //any of them\r
if(hadJet) fhJetType->Fill(12.,jet->Pt()); //any of them\r
-\r
+ \r
if(eJet || ipsigJet || dvmJet) fhBJetEtaPhi->Fill(jet->Eta(),jet->Phi());\r
else fhNonBJetEtaPhi->Fill(jet->Eta(),jet->Phi());\r
-\r
+ \r
//leading jets\r
if (leadJet) {\r
- fhLeadJetType->Fill(0.,jet->Pt()); //all\r
+ fhLeadJetType->Fill(0.,jet->Pt()); //all\r
if(eJet ) fhLeadJetType->Fill(1.,jet->Pt());\r
if(eJet2 ) fhLeadJetType->Fill(2.,jet->Pt());\r
if(hadJet ) fhLeadJetType->Fill(3.,jet->Pt());\r
if(eJet2 && (dvmJet || ipsigJet) ) fhLeadJetType->Fill(5.,jet->Pt());\r
if(hadJet && (dvmJet || ipsigJet) ) fhLeadJetType->Fill(6.,jet->Pt());\r
}\r
-\r
+ \r
for(Int_t itrk = 0; itrk < ntrk; itrk++) {\r
- AliAODTrack* jetTrack = (AliAODTrack*)jet->GetTrack(itrk);\r
- Double_t xsi = TMath::Log(jet->Pt()/jetTrack->Pt());\r
- if(eJet || ipsigJet || dvmJet) {\r
- if(GetDebug() > 0) printf("AliAnaElectron::MakeAnalysisFillHistograms - We have a bjet!\n");\r
- fhBJetXsiFF->Fill(xsi,jet->Pt());\r
- fhBJetPtFF->Fill(jetTrack->Pt(),jet->Pt());\r
- } else {\r
- //Fill non-bjet histograms here\r
- fhNonBJetXsiFF->Fill(xsi,jet->Pt());\r
- fhNonBJetPtFF->Fill(jetTrack->Pt(),jet->Pt());\r
- }\r
+ AliAODTrack* jetTrack = (AliAODTrack*)jet->GetTrack(itrk);\r
+ Double_t xsi = TMath::Log(jet->Pt()/jetTrack->Pt());\r
+ if(eJet || ipsigJet || dvmJet) {\r
+ if(GetDebug() > 0) printf("AliAnaElectron::MakeAnalysisFillHistograms - We have a bjet!\n");\r
+ fhBJetXsiFF->Fill(xsi,jet->Pt());\r
+ fhBJetPtFF->Fill(jetTrack->Pt(),jet->Pt());\r
+ } else {\r
+ //Fill non-bjet histograms here\r
+ fhNonBJetXsiFF->Fill(xsi,jet->Pt());\r
+ fhNonBJetPtFF->Fill(jetTrack->Pt(),jet->Pt());\r
+ }\r
}\r
-\r
+ \r
} //jet loop\r
} //jets exist\r
\r
\r
if(GetDebug() > 1) \r
printf("AliAnaElectron::MakeAnalysisFillHistograms() - ID Electron: pt %f, phi %f, eta %f\n", ele->Pt(),ele->Phi(),ele->Eta()) ;\r
-\r
+ \r
//MC tag of this electron\r
Int_t mctag = ele->GetTag();\r
-\r
+ \r
//Filter for photonic electrons based on opening angle and Minv\r
//cuts, also fill histograms\r
Bool_t photonic = kFALSE;\r
if(photonic2) ph2++;\r
if(photonic1 && photonic2) phB++;\r
if(photonic1 || photonic2) photonic = kTRUE;\r
-\r
+ \r
//Fill electron histograms \r
Float_t ptele = ele->Pt();\r
Float_t phiele = ele->Phi();\r
Float_t etaele = ele->Eta();\r
-\r
+ \r
//"Best reconstructed electron spectrum" = EMCAL or tracking\r
//detectors say it is an electron and it does not form a V0\r
//with Minv near a relevant resonance\r
fhPtNPEleTTE->Fill(ptele,0); //0 = no MC info\r
if(ele->GetDetector() == fCalorimeter) fhPtNPEleEMCAL->Fill(ptele,0);\r
if(IsDataMC()) {\r
- fhPtNPEleTTE->Fill(ptele,GetMCSource(mctag));\r
- if(ele->GetDetector() == "EMCAL") fhPtNPEleEMCAL->Fill(ptele,GetMCSource(mctag));\r
- if(GetMCSource(mctag) == 1) { //it's a bottom electron, now\r
- //get the parent's pt\r
- Double_t ptbHadron = GetBParentPt(ele->GetLabel());\r
- fhPtNPEBHadron->Fill(ptele,ptbHadron);\r
- } //mctag\r
+ fhPtNPEleTTE->Fill(ptele,GetMCSource(mctag));\r
+ if(ele->GetDetector() == "EMCAL") fhPtNPEleEMCAL->Fill(ptele,GetMCSource(mctag));\r
+ if(GetMCSource(mctag) == 1) { //it's a bottom electron, now\r
+ //get the parent's pt\r
+ Double_t ptbHadron = GetBParentPt(ele->GetLabel());\r
+ fhPtNPEBHadron->Fill(ptele,ptbHadron);\r
+ } //mctag\r
} //isdatamc\r
} //!photonic\r
-\r
+ \r
//kept for historical reasons?\r
fhPtElectron ->Fill(ptele);\r
fhPhiElectron ->Fill(ptele,phiele);\r
fhEtaElectron ->Fill(ptele,etaele);\r
-\r
+ \r
if(photonic) {\r
fhPtPE->Fill(ptele);\r
fhPhiPE->Fill(ptele,phiele);\r
fhPhiNPE->Fill(ptele,phiele);\r
fhEtaNPE->Fill(ptele,etaele);\r
}\r
-\r
+ \r
if(IsDataMC()){\r
if(GetMCAnalysisUtils()->CheckTagBit(mctag,AliMCAnalysisUtils::kMCConversion)){\r
- fhPhiConversion ->Fill(ptele,phiele);\r
- fhEtaConversion ->Fill(ptele,etaele);\r
+ fhPhiConversion ->Fill(ptele,phiele);\r
+ fhEtaConversion ->Fill(ptele,etaele);\r
}\r
}//Histograms with MC\r
\r
}// aod loop\r
-\r
+ \r
////////////////////////////////////////////////////////\r
//Fill histograms of pure MC kinematics from the stack//\r
////////////////////////////////////////////////////////\r
- if(IsDataMC()) {\r
-\r
+ if(IsDataMC() && stack) {\r
+ \r
//MC Jets\r
TVector3 bjetVect[4];\r
Int_t nPythiaGenJets = 0;\r
nPythiaGenJets = pythiaGenHeader->NTriggerJets();\r
Int_t iCount = 0;\r
for(int ip = 0;ip < nPythiaGenJets;++ip){\r
- if (iCount>3) break;\r
- Float_t p[4];\r
- pythiaGenHeader->TriggerJet(ip,p);\r
- TVector3 tempVect(p[0],p[1],p[2]);\r
- if ( TMath::Abs(tempVect.Eta())>fJetEtaCut || tempVect.Phi() < fJetPhiMin || tempVect.Phi() > fJetPhiMax) continue;\r
- //Only store it if it has a b-quark within dR < 0.2 of jet axis ?\r
- if(IsMcBJet(tempVect.Eta(),tempVect.Phi())) {\r
- bjetVect[iCount].SetXYZ(p[0], p[1], p[2]);\r
- iCount++;\r
- }\r
+ if (iCount>3) break;\r
+ Float_t p[4];\r
+ pythiaGenHeader->TriggerJet(ip,p);\r
+ TVector3 tempVect(p[0],p[1],p[2]);\r
+ if ( TMath::Abs(tempVect.Eta())>fJetEtaCut || tempVect.Phi() < fJetPhiMin || tempVect.Phi() > fJetPhiMax) continue;\r
+ //Only store it if it has a b-quark within dR < 0.2 of jet axis ?\r
+ if(IsMcBJet(tempVect.Eta(),tempVect.Phi())) {\r
+ bjetVect[iCount].SetXYZ(p[0], p[1], p[2]);\r
+ iCount++;\r
+ }\r
}\r
}\r
-\r
+ \r
Int_t nPart = GetNumAODMCParticles();\r
if(GetReader()->ReadStack()) nPart = stack->GetNtrack();\r
-\r
+ \r
for(Int_t ipart = 0; ipart < nPart; ipart++) {\r
-\r
+ \r
//All the variables we want from MC particles\r
Double_t px = 0.; Double_t py = 0.; Double_t pz = 0.; Double_t e = 0.;\r
Double_t vx = -999.; Double_t vy = -999.; Double_t vz = -999.; Double_t vt = -999.;\r
Int_t pdg = 0; Int_t mpdg = 0; Double_t mpt = 0.;\r
-\r
+ \r
if(GetReader()->ReadStack()) {\r
- primary = stack->Particle(ipart);\r
- pdg = primary->GetPdgCode();\r
- px = primary->Px(); py = primary->Py(); pz = primary->Pz(); e = primary->Energy();\r
- vx = primary->Vx(); vy = primary->Vy(); vz = primary->Vz(); vt = primary->T();\r
- if(primary->GetMother(0)>=0) {\r
- TParticle *parent = stack->Particle(primary->GetMother(0));\r
- if (parent) {\r
- mpdg = parent->GetPdgCode();\r
- mpt = parent->Pt();\r
- }\r
- }\r
+ primary = stack->Particle(ipart);\r
+ pdg = primary->GetPdgCode();\r
+ px = primary->Px(); py = primary->Py(); pz = primary->Pz(); e = primary->Energy();\r
+ vx = primary->Vx(); vy = primary->Vy(); vz = primary->Vz(); vt = primary->T();\r
+ if(primary->GetMother(0)>=0) {\r
+ TParticle *parent = stack->Particle(primary->GetMother(0));\r
+ if (parent) {\r
+ mpdg = parent->GetPdgCode();\r
+ mpt = parent->Pt();\r
+ }\r
+ }\r
} else if(GetReader()->ReadAODMCParticles()) {\r
- aodprimary = (AliAODMCParticle*)GetMCParticle(ipart);\r
- pdg = aodprimary->GetPdgCode();\r
- px = aodprimary->Px(); py = aodprimary->Py(); pz = aodprimary->Pz(); e = aodprimary->E();\r
- vx = aodprimary->Xv(); vy = aodprimary->Yv(); vz = aodprimary->Zv(); vt = aodprimary->T();\r
- Int_t parentId = aodprimary->GetMother();\r
- if(parentId>=0) {\r
- AliAODMCParticle *parent = (AliAODMCParticle*)GetMCParticle(parentId);\r
- if (parent) {\r
- mpdg = parent->GetPdgCode();\r
- mpt = parent->Pt();\r
- }\r
- } \r
+ aodprimary = (AliAODMCParticle*)GetMCParticle(ipart);\r
+ pdg = aodprimary->GetPdgCode();\r
+ px = aodprimary->Px(); py = aodprimary->Py(); pz = aodprimary->Pz(); e = aodprimary->E();\r
+ vx = aodprimary->Xv(); vy = aodprimary->Yv(); vz = aodprimary->Zv(); vt = aodprimary->T();\r
+ Int_t parentId = aodprimary->GetMother();\r
+ if(parentId>=0) {\r
+ AliAODMCParticle *parent = (AliAODMCParticle*)GetMCParticle(parentId);\r
+ if (parent) {\r
+ mpdg = parent->GetPdgCode();\r
+ mpt = parent->Pt();\r
+ }\r
+ } \r
}\r
-\r
+ \r
TLorentzVector mom(px,py,pz,e);\r
TLorentzVector pos(vx,vy,vz,vt);\r
Bool_t in = kFALSE;\r
if(mom.Phi()*180./TMath::Pi() > 80. && mom.Phi()*180./TMath::Pi() < 190. &&\r
- mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
+ mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
/////////////////////////////////\r
//THIS HAS A MEM LEAK JLK 24-Oct-09\r
//Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,fCalorimeter);\r
////////////////////////////////\r
if(mom.Pt() < GetMinPt()) continue;\r
if(!in) continue;\r
-\r
+ \r
if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 321 || TMath::Abs(pdg) == 2212)\r
- fhPtMCHadron->Fill(mom.Pt());\r
+ fhPtMCHadron->Fill(mom.Pt());\r
\r
//we only care about electrons\r
if(TMath::Abs(pdg) != 11) continue;\r
if(pos.Rho() > 200.) continue;\r
//Ignore low pt electrons\r
if(mom.Pt() < 0.2) continue;\r
- \r
+ \r
//find out what the ancestry of this electron is\r
Int_t mctag = -1;\r
Int_t input = 0;\r
mctag = GetMCAnalysisUtils()->CheckOrigin(ipart,GetReader(),input);\r
\r
if(GetMCSource(mctag)==1) { //bottom electron\r
- //See if it is within dR < 0.4 of a bjet\r
- for(Int_t ij = 0; ij < nPythiaGenJets; ij++) {\r
- Double_t deta = primary->Eta() - bjetVect[ij].Eta();\r
- Double_t dphi = primary->Phi() - bjetVect[ij].Phi();\r
- Double_t dR = TMath::Sqrt(deta*deta + dphi*dphi);\r
- if(dR < 0.4) {\r
- fhMCBJetElePt->Fill(primary->Pt(),bjetVect[ij].Pt());\r
- }\r
- }\r
+ //See if it is within dR < 0.4 of a bjet\r
+ for(Int_t ij = 0; ij < nPythiaGenJets; ij++) {\r
+ Double_t deta = primary->Eta() - bjetVect[ij].Eta();\r
+ Double_t dphi = primary->Phi() - bjetVect[ij].Phi();\r
+ Double_t dR = TMath::Sqrt(deta*deta + dphi*dphi);\r
+ if(dR < 0.4) {\r
+ fhMCBJetElePt->Fill(primary->Pt(),bjetVect[ij].Pt());\r
+ }\r
+ }\r
}\r
-\r
+ \r
if ((TMath::Abs(mpdg) >500 && TMath::Abs(mpdg) <600 ) ||\r
- (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
- {\r
- fhMCBHadronElePt->Fill(mom.Pt(), mpt); \r
- }\r
+ (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
+ {\r
+ fhMCBHadronElePt->Fill(mom.Pt(), mpt); \r
+ }\r
//CHECK THAT THIS IS CORRECTLY FILLED - SHOULD WE USE MCSOURCE HERE?\r
fhPtMCElectron->Fill(mom.Pt(),0); //0 = unfiltered\r
fhPtMCElectron->Fill(mom.Pt(),GetMCSource(mctag));\r
-\r
+ \r
if(GetMCSource(mctag) == 4) {//conversion\r
- fhMCXYConversion->Fill(vx,vy);\r
- fhMCRadPtConversion->Fill(TMath::Sqrt(vx*vx+vy*vy),mom.Pt());\r
+ fhMCXYConversion->Fill(vx,vy);\r
+ fhMCRadPtConversion->Fill(TMath::Sqrt(vx*vx+vy*vy),mom.Pt());\r
}\r
- \r
+ \r
//fill ntuple\r
if(fWriteNtuple) {\r
- fMCEleNtuple->Fill(mctag,mom.Pt(),mom.Phi(),mom.Eta(),vx,vy,vz);\r
+ fMCEleNtuple->Fill(mctag,mom.Pt(),mom.Phi(),mom.Eta(),vx,vy,vz);\r
}\r
}\r
} //MC loop\r
{\r
//Check this track to see if it is also tagged as an electron in the\r
//AliAODPWG4Particle list and if it is non-photonic\r
-\r
+ \r
Bool_t pass = kFALSE;\r
-\r
+ \r
Int_t trackId = track->GetID(); //get the index in the reader\r
-\r
+ \r
Int_t naod = GetOutputAODBranch()->GetEntriesFast();\r
if(GetDebug() > 3) printf("AliAnaElectron::CheckTrack() - aod branch entries %d\n", naod);\r
for(Int_t iaod = 0; iaod < naod ; iaod++){\r
AliAODPWG4Particle* ele = (AliAODPWG4Particle*) (GetOutputAODBranch()->At(iaod));\r
Int_t label = ele->GetTrackLabel(0);\r
if(label != trackId) continue; //skip to the next one if they don't match\r
-\r
+ \r
if(strcmp(type,"DVM")==0) { \r
if(ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag1) ||\r
- ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag2))\r
- pass = kTRUE;\r
-\r
+ ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag2))\r
+ pass = kTRUE;\r
+ \r
} else if (strcmp(type,"NPE")==0) {\r
-\r
+ \r
Bool_t photonic = kFALSE;\r
Bool_t photonic1 = kFALSE;\r
photonic1 = PhotonicPrim(ele); //check against primaries\r
if(photonic1 || photonic2) photonic = kTRUE;\r
\r
if(!photonic) pass = kTRUE;\r
-\r
+ \r
} else {\r
return kFALSE;\r
}\r
}\r
-\r
+ \r
return pass;\r
-\r
+ \r
}\r
\r
//__________________________________________________________________\r
if(prim->GetMother(0)>=0) {\r
Int_t mpdg = 0;\r
TParticle *parent = stack->Particle(prim->GetMother(0));\r
- if(parent) mpdg = parent->GetPdgCode();\r
-\r
- if ((TMath::Abs(mpdg) >500 && TMath::Abs(mpdg) <600 ) ||\r
- (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
- return parent->Pt();\r
+ if(parent){\r
+ mpdg = parent->GetPdgCode();\r
+ \r
+ if ((TMath::Abs(mpdg) >500 && TMath::Abs(mpdg) <600 ) ||\r
+ (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
+ return parent->Pt();\r
+ }\r
}\r
} else if(GetReader()->ReadAODMCParticles()){\r
AliAODMCParticle* prim = (AliAODMCParticle*)GetMCParticle(ipart);\r
if(prim->GetMother()>=0) {\r
Int_t mpdg = 0;\r
AliAODMCParticle* parent = (AliAODMCParticle*)GetMCParticle(prim->GetMother());\r
- if(parent) mpdg = parent->GetPdgCode();\r
- if ((TMath::Abs(mpdg) >500 && TMath::Abs(mpdg) <600 ) ||\r
+ if(parent){\r
+ mpdg = parent->GetPdgCode();\r
+ if ((TMath::Abs(mpdg) >500 && TMath::Abs(mpdg) <600 ) ||\r
(TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
- return parent->Pt();\r
+ return parent->Pt();\r
+ }\r
}\r
}\r
return 0.;\r