X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGGA%2FCaloTrackCorrelations%2FAliAnaPi0EbE.cxx;h=6fd6309a92d3b913dd3c74cdb52c91c2e356cd66;hb=c2a62a9423733e55c22126a5a1833b32f1e364cb;hp=253dcdcab6dfd307b398b69f1548265ba40aac0b;hpb=a1fd1b698950182c727a1142fe35c668cad45897;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx b/PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx index 253dcdcab6d..6fd6309a92d 100755 --- a/PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx +++ b/PWGGA/CaloTrackCorrelations/AliAnaPi0EbE.cxx @@ -52,19 +52,25 @@ AliAnaPi0EbE::AliAnaPi0EbE() : fMinDist(0.),fMinDist2(0.), fMinDist3(0.), fNLMCutMin(-1), fNLMCutMax(10), fTimeCutMin(-10000), fTimeCutMax(10000), + fRejectTrackMatch(kTRUE), fFillPileUpHistograms(0), fFillWeightHistograms(kFALSE), fFillTMHisto(0), - fFillSelectClHisto(0), fFillOnlySimpleSSHisto(1), + fFillSelectClHisto(0), fFillOnlySimpleSSHisto(1), fFillEMCALBCHistograms(0), fInputAODGammaConvName(""), // Histograms fhPt(0), fhE(0), - fhEEta(0), fhEPhi(0), fhEtaPhi(0), + fhEEta(0), fhEPhi(0), + fhPtEta(0), fhPtPhi(0), fhEtaPhi(0), + fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0), fhPtCentrality(), fhPtEventPlane(0), fhPtReject(0), fhEReject(0), fhEEtaReject(0), fhEPhiReject(0), fhEtaPhiReject(0), - fhMass(0), fhAsymmetry(0), - fhSelectedMass(0), fhSelectedAsymmetry(0), + fhMass(0), fhMassPt(0), fhMassSplitPt(0), + fhSelectedMass(0), fhSelectedMassPt(0), fhSelectedMassSplitPt(0), + fhAsymmetry(0), fhSelectedAsymmetry(0), fhSplitE(0), fhSplitPt(0), + fhSplitPtEta(0), fhSplitPtPhi(0), + fhNLocMaxSplitPt(0), fhPtDecay(0), fhEDecay(0), // Shower shape histos fhEDispersion(0), fhELambda0(0), fhELambda1(0), @@ -90,10 +96,11 @@ AliAnaPi0EbE::AliAnaPi0EbE() : fhECellClusterRatio(0), fhECellClusterLogRatio(0), fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0), fhTrackMatchedDEta(0), fhTrackMatchedDPhi(0), fhTrackMatchedDEtaDPhi(0), - fhTrackMatchedMCParticle(0), fhdEdx(0), - fhEOverP(0), fhEOverPNoTRD(0), + fhTrackMatchedMCParticleE(0), + fhTrackMatchedMCParticleDEta(0), fhTrackMatchedMCParticleDPhi(0), + fhdEdx(0), fhEOverP(0), fhEOverPNoTRD(0), // Number of local maxima in cluster - fhNLocMax(0), + fhNLocMaxE(0), fhNLocMaxPt(0), // PileUp fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0), fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0), @@ -106,12 +113,16 @@ AliAnaPi0EbE::AliAnaPi0EbE() : { fhMCE [i] = 0; fhMCPt [i] = 0; - fhMCPhi [i] = 0; + fhMCNLocMaxPt [i] = 0; + fhMCPhi [i] = 0; fhMCEta [i] = 0; fhMCPtCentrality [i] = 0; fhMCSplitE [i] = 0; fhMCSplitPt [i] = 0; + fhMCSplitPtPhi [i] = 0; + fhMCSplitPtEta [i] = 0; + fhMCNLocMaxSplitPt [i] = 0; fhEMCLambda0 [i] = 0; fhEMCLambda0NoTRD [i] = 0; @@ -127,6 +138,11 @@ AliAnaPi0EbE::AliAnaPi0EbE() : fhMCESphericity [i] = 0; fhMCEAsymmetry [i] = 0; + fhMCMassPt [i]=0; + fhMCMassSplitPt [i]=0; + fhMCSelectedMassPt [i]=0; + fhMCSelectedMassSplitPt[i]=0; + for(Int_t j = 0; j < 7; j++) { fhMCLambda0DispEta [j][i] = 0; @@ -170,6 +186,12 @@ AliAnaPi0EbE::AliAnaPi0EbE() : if(i<8)fhMassPairLocMax[i] = 0; } + for(Int_t i = 0; i < 12; i++) + { + fhEtaPhiTriggerEMCALBC[i] = 0 ; + fhTimeTriggerEMCALBC [i] = 0 ; + } + //Initialize parameters InitParameters(); @@ -349,7 +371,7 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster, } } - fhNLocMax->Fill(e,nMaxima); + fhNLocMaxE ->Fill(e ,nMaxima); fhELambda0LocMax [indexMax]->Fill(e,l0); fhELambda1LocMax [indexMax]->Fill(e,l1); @@ -422,24 +444,30 @@ void AliAnaPi0EbE::FillSelectedClusterHistograms(AliVCluster* cluster, if(IsDataMC()) { + Float_t mctag = -1; if ( !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion) ) { if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) || - GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle->Fill(e, 2.5 ); - else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle->Fill(e, 0.5 ); - else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle->Fill(e, 1.5 ); - else fhTrackMatchedMCParticle->Fill(e, 3.5 ); + GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mctag = 2.5 ; + else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) ) mctag = 0.5 ; + else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mctag = 1.5 ; + else mctag = 3.5 ; } else { if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0) || - GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle->Fill(e, 6.5 ); - else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle->Fill(e, 4.5 ); - else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle->Fill(e, 5.5 ); - else fhTrackMatchedMCParticle->Fill(e, 7.5 ); - } - } // MC + GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEta) ) mctag = 6.5 ; + else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) ) mctag = 4.5 ; + else if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron) ) mctag = 5.5 ; + else mctag = 7.5 ; + } + + fhTrackMatchedMCParticleE ->Fill(e , mctag); + fhTrackMatchedMCParticleDEta->Fill(dZ, mctag); + fhTrackMatchedMCParticleDPhi->Fill(dR, mctag); + + } // MC } }// Track matching histograms @@ -658,6 +686,18 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhEEta->SetYTitle("#eta"); fhEEta->SetXTitle("E (GeV)"); outputContainer->Add(fhEEta) ; + + fhPtPhi = new TH2F + ("hPtPhi","Selected #pi^{0} (#eta) pairs: p_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax); + fhPtPhi->SetYTitle("#phi (rad)"); + fhPtPhi->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhPtPhi) ; + + fhPtEta = new TH2F + ("hPtEta","Selected #pi^{0} (#eta) pairs: p_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax); + fhPtEta->SetYTitle("#eta"); + fhPtEta->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhPtEta) ; fhEtaPhi = new TH2F ("hEtaPhi","Selected #pi^{0} (#eta) pairs: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax); @@ -665,6 +705,54 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhEtaPhi->SetXTitle("#eta"); outputContainer->Add(fhEtaPhi) ; + if(fCalorimeter=="EMCAL" && fFillEMCALBCHistograms) + { + fhEtaPhiEMCALBC0 = new TH2F + ("hEtaPhiEMCALBC0","cluster,E > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax); + fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)"); + fhEtaPhiEMCALBC0->SetXTitle("#eta"); + outputContainer->Add(fhEtaPhiEMCALBC0) ; + + fhEtaPhiEMCALBC1 = new TH2F + ("hEtaPhiEMCALBC1","cluster,E > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax); + fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)"); + fhEtaPhiEMCALBC1->SetXTitle("#eta"); + outputContainer->Add(fhEtaPhiEMCALBC1) ; + + fhEtaPhiEMCALBCN = new TH2F + ("hEtaPhiEMCALBCN","cluster,E > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax); + fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)"); + fhEtaPhiEMCALBCN->SetXTitle("#eta"); + outputContainer->Add(fhEtaPhiEMCALBCN) ; + + for(Int_t i = 0; i < 12; i++) + { + fhEtaPhiTriggerEMCALBC[i] = new TH2F + (Form("hEtaPhiTriggerEMCALBC%d",i-5), + Form("cluster,E > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-5), + netabins,etamin,etamax,nphibins,phimin,phimax); + fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)"); + fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta"); + outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ; + + fhTimeTriggerEMCALBC[i] = new TH2F + (Form("hTimeTriggerEMCALBC%d",i-5), + Form("time of cluster vs E of clusters, Trigger EMCAL-BC=%d",i-5), + nptbins,ptmin,ptmax, ntimebins,timemin,timemax); + fhTimeTriggerEMCALBC[i]->SetXTitle("E (GeV)"); + fhTimeTriggerEMCALBC[i]->SetYTitle("time (ns)"); + outputContainer->Add(fhTimeTriggerEMCALBC[i]); + + fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F + (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-5), + Form("time of cluster vs E of clusters, Trigger EMCAL-BC=%d",i-5), + nptbins,ptmin,ptmax, ntimebins,timemin,timemax); + fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("E (GeV)"); + fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("time (ns)"); + outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]); + } + } + fhPtCentrality = new TH2F("hPtCentrality","centrality vs p_{T}",nptbins,ptmin,ptmax, 100,0,100); fhPtCentrality->SetYTitle("centrality"); fhPtCentrality->SetXTitle("p_{T}(GeV/c)"); @@ -717,7 +805,19 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhSelectedMass->SetYTitle("mass (GeV/c^{2})"); fhSelectedMass->SetXTitle("E (GeV)"); outputContainer->Add(fhSelectedMass) ; - + + fhMassPt = new TH2F + ("hMassPt","all pairs mass: p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMassPt->SetYTitle("mass (GeV/c^{2})"); + fhMassPt->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMassPt) ; + + fhSelectedMassPt = new TH2F + ("hSelectedMassPt","Selected #pi^{0} (#eta) pairs mass: p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhSelectedMassPt->SetYTitle("mass (GeV/c^{2})"); + fhSelectedMassPt->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhSelectedMassPt) ; + if(fAnaType != kSSCalo) { fhPtDecay = new TH1F("hPtDecay","Number of identified #pi^{0} (#eta) decay photons",nptbins,ptmin,ptmax); @@ -845,11 +945,20 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() } } - fhNLocMax = new TH2F("hNLocMax","Number of local maxima in cluster", - nptbins,ptmin,ptmax,10,0,10); - fhNLocMax ->SetYTitle("N maxima"); - fhNLocMax ->SetXTitle("E (GeV)"); - outputContainer->Add(fhNLocMax) ; + fhNLocMaxE = new TH2F("hNLocMaxE","Number of local maxima in cluster", + nptbins,ptmin,ptmax,10,0,10); + fhNLocMaxE ->SetYTitle("N maxima"); + fhNLocMaxE ->SetXTitle("E (GeV)"); + outputContainer->Add(fhNLocMaxE) ; + + if(fAnaType == kSSCalo) + { + fhNLocMaxPt = new TH2F("hNLocMaxPt","Number of local maxima in cluster", + nptbins,ptmin,ptmax,10,0,10); + fhNLocMaxPt ->SetYTitle("N maxima"); + fhNLocMaxPt ->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhNLocMaxPt) ; + } for (Int_t i = 0; i < 3; i++) { @@ -1002,23 +1111,61 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() if(IsDataMC() && fFillTMHisto) { - fhTrackMatchedMCParticle = new TH2F - ("hTrackMatchedMCParticle", + fhTrackMatchedMCParticleE = new TH2F + ("hTrackMatchedMCParticleE", "Origin of particle vs energy", nptbins,ptmin,ptmax,8,0,8); - fhTrackMatchedMCParticle->SetXTitle("E (GeV)"); - //fhTrackMatchedMCParticle->SetYTitle("Particle type"); - - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(1 ,"Photon"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(2 ,"Electron"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(3 ,"Meson Merged"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(4 ,"Rest"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(5 ,"Conv. Photon"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(6 ,"Conv. Electron"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(7 ,"Conv. Merged"); - fhTrackMatchedMCParticle->GetYaxis()->SetBinLabel(8 ,"Conv. Rest"); - - outputContainer->Add(fhTrackMatchedMCParticle); + fhTrackMatchedMCParticleE->SetXTitle("E (GeV)"); + //fhTrackMatchedMCParticleE->SetYTitle("Particle type"); + + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(1 ,"Photon"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(2 ,"Electron"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(3 ,"Meson Merged"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(4 ,"Rest"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(5 ,"Conv. Photon"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(6 ,"Conv. Electron"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(7 ,"Conv. Merged"); + fhTrackMatchedMCParticleE->GetYaxis()->SetBinLabel(8 ,"Conv. Rest"); + + outputContainer->Add(fhTrackMatchedMCParticleE); + + fhTrackMatchedMCParticleDEta = new TH2F + ("hTrackMatchedMCParticleDEta", + "Origin of particle vs #eta residual", + nresetabins,resetamin,resetamax,8,0,8); + fhTrackMatchedMCParticleDEta->SetXTitle("#Delta #eta"); + //fhTrackMatchedMCParticleDEta->SetYTitle("Particle type"); + + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(1 ,"Photon"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(2 ,"Electron"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(3 ,"Meson Merged"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(4 ,"Rest"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(5 ,"Conv. Photon"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(6 ,"Conv. Electron"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(7 ,"Conv. Merged"); + fhTrackMatchedMCParticleDEta->GetYaxis()->SetBinLabel(8 ,"Conv. Rest"); + + outputContainer->Add(fhTrackMatchedMCParticleDEta); + + fhTrackMatchedMCParticleDPhi = new TH2F + ("hTrackMatchedMCParticleDPhi", + "Origin of particle vs #phi residual", + nresphibins,resphimin,resphimax,8,0,8); + fhTrackMatchedMCParticleDPhi->SetXTitle("#Delta #phi"); + //fhTrackMatchedMCParticleDPhi->SetYTitle("Particle type"); + + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(1 ,"Photon"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(2 ,"Electron"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(3 ,"Meson Merged"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(4 ,"Rest"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(5 ,"Conv. Photon"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(6 ,"Conv. Electron"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(7 ,"Conv. Merged"); + fhTrackMatchedMCParticleDPhi->GetYaxis()->SetBinLabel(8 ,"Conv. Rest"); + + outputContainer->Add(fhTrackMatchedMCParticleDPhi); + + } } @@ -1177,6 +1324,15 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() if(fAnaType == kSSCalo) { + + fhMCNLocMaxPt[i] = new TH2F + (Form("hNLocMaxPt_MC%s",pname[i].Data()), + Form("cluster from %s, pT of cluster, for NLM",ptype[i].Data()), + nptbins,ptmin,ptmax,10,0,10); + fhMCNLocMaxPt[i] ->SetYTitle("N maxima"); + fhMCNLocMaxPt[i] ->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCNLocMaxPt[i]) ; + fhMCEReject[i] = new TH1F (Form("hEReject_MC%s",pname[i].Data()), Form("Rejected as #pi^{0} (#eta), cluster from %s", @@ -1211,7 +1367,23 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhMCEta[i]->SetYTitle("#eta"); fhMCEta[i]->SetXTitle("p_{T} (GeV/c)"); outputContainer->Add(fhMCEta[i]) ; + + fhMCMassPt[i] = new TH2F + (Form("hMassPt_MC%s",pname[i].Data()), + Form("all pairs mass: p_{T} vs massfrom %s",ptype[i].Data()), + nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMCMassPt[i]->SetYTitle("mass (GeV/c^{2})"); + fhMCMassPt[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCMassPt[i]) ; + fhMCSelectedMassPt[i] = new TH2F + (Form("hSelectedMassPt_MC%s",pname[i].Data()), + Form("Selected #pi^{0} (#eta) pairs mass: p_{T} vs massfrom %s",ptype[i].Data()), + nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMCSelectedMassPt[i]->SetYTitle("mass (GeV/c^{2})"); + fhMCSelectedMassPt[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCSelectedMassPt[i]) ; + if( fFillSelectClHisto ) { @@ -1355,6 +1527,41 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhSplitPt->SetXTitle("p_{T} (GeV/c)"); outputContainer->Add(fhSplitPt) ; + + fhSplitPtPhi = new TH2F + ("hSplitPtPhi","Selected #pi^{0} (#eta) pairs: sum split sub-cluster p_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax); + fhSplitPtPhi->SetYTitle("#phi (rad)"); + fhSplitPtPhi->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhSplitPtPhi) ; + + fhSplitPtEta = new TH2F + ("hSplitPtEta","Selected #pi^{0} (#eta) pairs: sum split sub-cluster p_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax); + fhSplitPtEta->SetYTitle("#eta"); + fhSplitPtEta->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhSplitPtEta) ; + + + fhNLocMaxSplitPt = new TH2F("hNLocMaxSplitPt","Number of local maxima in cluster", + nptbins,ptmin,ptmax,10,0,10); + fhNLocMaxSplitPt ->SetYTitle("N maxima"); + fhNLocMaxSplitPt ->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhNLocMaxSplitPt) ; + + + fhMassSplitPt = new TH2F + ("hMassSplitPt","all pairs mass: sum split sub-cluster p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMassSplitPt->SetYTitle("mass (GeV/c^{2})"); + fhMassSplitPt->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMassSplitPt) ; + + fhSelectedMassSplitPt = new TH2F + ("hSelectedMassSplitPt","Selected #pi^{0} (#eta) pairs mass: sum split sub-cluster p_{T} vs mass",nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhSelectedMassSplitPt->SetYTitle("mass (GeV/c^{2})"); + fhSelectedMassSplitPt->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhSelectedMassSplitPt) ; + + + if(IsDataMC()) { for(Int_t i = 0; i< 6; i++) @@ -1382,6 +1589,48 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() fhMCSplitPt[i]->SetXTitle("p_{T} (GeV/c)"); outputContainer->Add(fhMCSplitPt[i]) ; + + fhMCSplitPtPhi[i] = new TH2F + (Form("hSplitPtPhi_MC%s",pname[i].Data()), + Form("Identified as #pi^{0} (#eta), cluster from %s",ptype[i].Data()), + nptbins,ptmin,ptmax,nphibins,phimin,phimax); + fhMCSplitPtPhi[i]->SetYTitle("#phi"); + fhMCSplitPtPhi[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCSplitPtPhi[i]) ; + + fhMCSplitPtEta[i] = new TH2F + (Form("hSplitPtEta_MC%s",pname[i].Data()), + Form("Identified as #pi^{0} (#eta), cluster from %s", + ptype[i].Data()),nptbins,ptmin,ptmax,netabins,etamin,etamax); + fhMCSplitPtEta[i]->SetYTitle("#eta"); + fhMCSplitPtEta[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCSplitPtEta[i]) ; + + + fhMCNLocMaxSplitPt[i] = new TH2F + (Form("hNLocMaxSplitPt_MC%s",pname[i].Data()), + Form("cluster from %s, pT sum of split sub-clusters, for NLM",ptype[i].Data()), + nptbins,ptmin,ptmax,10,0,10); + fhMCNLocMaxSplitPt[i] ->SetYTitle("N maxima"); + fhMCNLocMaxSplitPt[i] ->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCNLocMaxSplitPt[i]) ; + + fhMCMassSplitPt[i] = new TH2F + (Form("hMassSplitPt_MC%s",pname[i].Data()), + Form("all pairs mass: split p_{T} vs mass from %s",ptype[i].Data()), + nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMCMassSplitPt[i]->SetYTitle("mass (GeV/c^{2})"); + fhMCMassSplitPt[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCMassSplitPt[i]) ; + + fhMCSelectedMassSplitPt[i] = new TH2F + (Form("hSelectedMassSplitPt_MC%s",pname[i].Data()), + Form("Selected #pi^{0} (#eta) pairs mass: split p_{T} vs mass from %s",ptype[i].Data()), + nptbins,ptmin,ptmax, nmassbins,massmin,massmax); + fhMCSelectedMassSplitPt[i]->SetYTitle("mass (GeV/c^{2})"); + fhMCSelectedMassSplitPt[i]->SetXTitle("p_{T} (GeV/c)"); + outputContainer->Add(fhMCSelectedMassSplitPt[i]) ; + } } } @@ -2116,12 +2365,11 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() } //Skip matched clusters with tracks - if(IsTrackMatched(calo, GetReader()->GetInputEvent())) + if(fRejectTrackMatch && IsTrackMatched(calo, GetReader()->GetInputEvent())) { FillRejectedClusterHistograms(mom,tag); continue ; } - //Check PID //PID selection or bit setting @@ -2151,19 +2399,33 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() if(GetDebug() > 1) printf("AliAnaPi0EbE::MakeShowerShapeIdentification() - NLM %d accepted \n",nMaxima); + Float_t e1 = l1.Energy(); + Float_t e2 = l2.Energy(); + TLorentzVector l12 = l1+l2; + Float_t ptSplit = l12.Pt(); + Float_t eSplit = e1+e2; + Int_t mcIndex = GetMCIndex(tag); + //mass of all clusters - fhMass->Fill(mom.E(),mass); + fhMass ->Fill(mom.E(),mass); + fhMassPt ->Fill(mom.Pt(),mass); + fhMassSplitPt->Fill(ptSplit,mass); + + if(IsDataMC()) + { + fhMCMassPt[mcIndex] ->Fill(mom.Pt(),mass); + fhMCMassSplitPt[mcIndex]->Fill(ptSplit,mass); + } // Asymmetry of all clusters Float_t asy =-10; - Float_t e1 = l1.Energy(); - Float_t e2 = l2.Energy(); + if(e1+e2 > 0) asy = (e1-e2) / (e1+e2); fhAsymmetry->Fill(mom.E(),asy); + if(IsDataMC()) { - Int_t mcIndex = GetMCIndex(tag); fhMCEAsymmetry[mcIndex]->Fill(mom.E(),asy); } @@ -2187,14 +2449,19 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() mom.Pt(), idPartType); //Mass and asymmetry of selected pairs - fhSelectedAsymmetry->Fill(mom.E(),asy); - fhSelectedMass ->Fill(mom.E(),mass); + fhSelectedAsymmetry ->Fill(mom.E() ,asy ); + fhSelectedMass ->Fill(mom.E() ,mass); + fhSelectedMassPt ->Fill(mom.Pt(),mass); + fhSelectedMassSplitPt->Fill(ptSplit ,mass); - TLorentzVector l12 = l1+l2; - Float_t ptSplit = l12.Pt(); - Float_t eSplit = e1+e2; - fhSplitE ->Fill( eSplit); - fhSplitPt ->Fill(ptSplit); + fhSplitE ->Fill( eSplit); + fhSplitPt ->Fill(ptSplit); + Float_t phi = mom.Phi(); + if(phi<0) phi+=TMath::TwoPi(); + fhSplitPtPhi ->Fill(ptSplit,phi); + fhSplitPtEta ->Fill(ptSplit,mom.Eta()); + fhNLocMaxSplitPt->Fill(ptSplit ,nMaxima); + fhNLocMaxPt ->Fill(mom.Pt(),nMaxima); //Check split-clusters with good time window difference Double_t tof1 = cells->GetCellTime(absId1); @@ -2210,11 +2477,17 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() if(IsDataMC()) { - Int_t mcIndex = GetMCIndex(tag); - fhMCSplitE [mcIndex]->Fill( eSplit); - fhMCSplitPt [mcIndex]->Fill(ptSplit); - } + fhMCSplitE [mcIndex]->Fill( eSplit); + fhMCSplitPt [mcIndex]->Fill(ptSplit); + fhMCSplitPtPhi [mcIndex]->Fill(ptSplit,phi); + fhMCSplitPtEta [mcIndex]->Fill(ptSplit,mom.Eta()); + fhMCNLocMaxSplitPt[mcIndex]->Fill(ptSplit ,nMaxima); + fhMCNLocMaxPt [mcIndex]->Fill(mom.Pt(),nMaxima); + + fhMCSelectedMassPt [mcIndex]->Fill(mom.Pt(),mass); + fhMCSelectedMassSplitPt[mcIndex]->Fill(ptSplit,mass); + } //----------------------- //Create AOD for analysis @@ -2246,7 +2519,32 @@ void AliAnaPi0EbE::MakeShowerShapeIdentification() // Fill histograms to undertand pile-up before other cuts applied // Remember to relax time cuts in the reader - FillPileUpHistograms(calo->E(),calo->GetTOF()*1e9); + Double_t tofcluster = calo->GetTOF()*1e9; + Double_t tofclusterUS = TMath::Abs(tofcluster); + + FillPileUpHistograms(calo->E(),tofcluster); + + if(fFillEMCALBCHistograms && fCalorimeter=="EMCAL") + { + Float_t phicluster = aodpi0.Phi(); + if(phicluster < 0) phicluster+=TMath::TwoPi(); + + if(calo->E() > 2) + { + if (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(aodpi0.Eta(), phicluster); + else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(aodpi0.Eta(), phicluster); + else fhEtaPhiEMCALBCN->Fill(aodpi0.Eta(), phicluster); + } + + Int_t bc = GetReader()->IsPileUpClusterTriggeredEvent(); + if(bc > -7 && bc < 8) + { + if(calo->E() > 2) fhEtaPhiTriggerEMCALBC[bc+5]->Fill(aodpi0.Eta(), phicluster); + fhTimeTriggerEMCALBC[bc+5]->Fill(calo->E(), tofcluster); + if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[bc+5]->Fill(calo->E(), tofcluster); + } + else printf("AliAnaPi0EbE::MakeShowerShapeIdentification() - Trigger BC not expected = %d\n",bc); + } //Add AOD with pi0 object to aod branch AddAODParticle(aodpi0); @@ -2293,6 +2591,8 @@ void AliAnaPi0EbE::MakeAnalysisFillHistograms() fhEEta ->Fill(ener,eta); fhEPhi ->Fill(ener,phi); + fhPtEta ->Fill(pt ,eta); + fhPtPhi ->Fill(pt ,phi); fhEtaPhi ->Fill(eta ,phi); fhPtCentrality ->Fill(pt,cen) ;