,fHistFracNeutronsVsNTotalTracks(0)
,fHistFracKaonsVsNTotalTracks(0)
,fHistFracSecondariesVsNTotalTracks(0)
+ ,fHistRCorrVsPtVsCent(0)
{
}
delete fHistFracNeutronsVsNTotalTracks;
delete fHistFracKaonsVsNTotalTracks;
delete fHistFracSecondariesVsNTotalTracks;
+ delete fHistRCorrVsPtVsCent;
}
Int_t AliAnalysisEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
Bool_t nottrackmatched = kTRUE;//default to no track matched
Float_t matchedTrackp = 0.0;
Float_t matchedTrackpt = 0.0;
+ fDepositedCode = part->GetPdgCode();
+ fReconstructedE = caloCluster->E();
+ Float_t pos[3];
+ //PrintFamilyTree(
+ caloCluster->GetPosition(pos);
+ TVector3 cp(pos);
+ fReconstructedEt = caloCluster->E()*TMath::Sin(cp.Theta());
nottrackmatched = fSelector->PassTrackMatchingCut(*caloCluster);
//by default ALL matched tracks are accepted, whether or not the match is good. So we check to see if the track is good.
if(!nottrackmatched){//if the track is trackmatched
Int_t trackMatchedIndex = caloCluster->GetTrackMatchedIndex();
if(trackMatchedIndex < 0) nottrackmatched=kTRUE;
AliESDtrack *track = realEvent->GetTrack(trackMatchedIndex);
- matchedTrackp = track->P();
- matchedTrackpt = track->Pt();
+ // cout<<"track code "<<fTrackDepositedCode<<" cluster code "<<fDepositedCode<<" track label "<<trackLabel<<" cluster label "<<iPart<<endl;
+
//if this is a good track, accept track will return true. The track matched is good, so not track matched is false
- nottrackmatched = !(fEsdtrackCutsTPC->AcceptTrack(track));//if the track is bad, this is track matched
- //if(!nottrackmatched) cout<<"Matched track p: "<<matchedTrackp<<" sim "<<part->P()<<endl;
+ nottrackmatched = !(fEsdtrackCutsTPC->AcceptTrack(track));//if the track is bad, this is not track matched
+ if(!nottrackmatched){//if the track that was matched is a good track
+ matchedTrackp = track->P();
+ matchedTrackpt = track->Pt();
+ UInt_t trackLabel = (UInt_t)TMath::Abs(track->GetLabel());
+ TParticle *trackSimPart = stack->Particle(trackLabel);
+ Int_t fTrackDepositedCode = trackSimPart->GetPdgCode();
+ //if(!nottrackmatched) cout<<"Matched track p: "<<matchedTrackp<<" sim "<<part->P()<<endl;
+ //now we want to fill our Rcorr histos
+ Float_t rcorr = fReconstructedE/track->P();
+ fHistRCorrVsPtVsCent->Fill(rcorr,matchedTrackpt, fCentClass);
+ //cout<<"rcorr "<<rcorr<<endl;
+ Int_t n=caloCluster->GetNLabels() ;
+ if(fReconstructedE - fsub* track->P() > 0.0){//if more energy was deposited than the momentum of the track and more than one particle led to the cluster
+ //then we say the cluster was not track matched but correct the energy
+ nottrackmatched = kTRUE;
+ //cout<<"Reassigning energy "<<fReconstructedEt;
+ fReconstructedE = fReconstructedE - fsub* track->P();
+ fReconstructedEt = fReconstructedE*TMath::Sin(cp.Theta());
+ //cout<<" to "<<fReconstructedEt<<endl;
+ if(fDepositedCode==fTrackDepositedCode && n>1){
+ //the energy deposited was more than the momentum of the track but the cluster was assigned to the particle that created the track. We therefore need to reassign the cluster label
+ //this is a sub-optimal way to re-assign the particle but it is rare that a particle needs to be reassigned
+ //cout<<"Particle was "<<part->GetName()<<" reassigning label from "<<fDepositedCode<<", testing ";
+ Int_t iMax=-1;
+ Double_t* Ekin= new Double_t[n] ;
+ for(Int_t i=0; i<n; i++){
+ TParticle* p= stack->Particle(caloCluster->GetLabelAt(i)) ;
+ if(p->GetPdgCode()==fgPiPlusCode || p->GetPdgCode()==fgKPlusCode || p->GetPdgCode()==fgProtonCode || p->GetPdgCode()==fgPiMinusCode || p->GetPdgCode()==fgKMinusCode || p->GetPdgCode()==fgAntiProtonCode){
+ Ekin[i]=0.3;//p->P()/3.0 ; // estimate of MIP peak, more likely to be what was deposited if the MIP peak overlapped with another peak
+ }
+ else{
+ Ekin[i]=p->Energy() ; // what's deposited by electromagnetic particles
+ }
+ if(p->GetPdgCode()==fgAntiProtonCode){
+ Ekin[i]+=1.8 ; //due to annihilation
+ }
+ }
+ Double_t eMax=0.;//eSubMax=0. ;
+ cout<<"n="<<n<<", ";
+ for(Int_t i=0; i<n; i++){
+ Int_t label = caloCluster->GetLabelAt(i);
+ if(label!=trackMatchedIndex){
+ //TParticle* p= stack->Particle(caloCluster->GetLabelAt(i)) ;
+ //cout<<i<<" "<<p->GetName()<<" with E="<<Ekin[i]<<",";
+ if(Ekin[i]>eMax){
+ // eSubMax=eMax;
+ eMax=Ekin[i];
+ iMax=i;
+ }
+ }
+ }
+ delete [] Ekin;
+ UInt_t correctLabel = caloCluster->GetLabelAt(iMax);
+ if(iMax>0){
+ TParticle *newPart = stack->Particle(correctLabel);
+ if(newPart){
+ part = newPart;
+ fDepositedCode = part->GetPdgCode();
+ //cout<<", to "<<fDepositedCode<<" and particle is now "<<part->GetName();
+ }
+ }
+ //cout<<endl;
+ }
+ // if(fDepositedCode==fgProtonCode || fDepositedCode==fgAntiProtonCode || fDepositedCode==fgPiPlusCode || fDepositedCode==fgPiMinusCode || fDepositedCode==fgKPlusCode || fDepositedCode==fgKMinusCode){
+ // for(UInt_t i = 0; i < caloCluster->GetNLabels(); i++)
+ // {
+ // Int_t pIdx = caloCluster->GetLabelAt(i);
+ // const UInt_t iPart = fSelector->GetLabel(caloCluster,stack);
+ // //const UInt_t iPart = (UInt_t)TMath::Abs(caloCluster->GetLabel());
+ // TParticle *part = stack->Particle(iPart);
+
+
+ }
+
+ }
}
Bool_t containsGamma = kFALSE;
}
fCutFlow->Fill(cf++);
if(!fSelector->PassDistanceToBadChannelCut(*caloCluster)) continue;
- Double_t clEt = CorrectForReconstructionEfficiency(*caloCluster,fCentClass);
+ Double_t clEt = CorrectForReconstructionEfficiency(*caloCluster,fReconstructedE,fCentClass);
// if(code == fgK0SCode) std::cout << "K0 energy: " << caloCluster->E() << std::endl;
- if(!fSelector->PassMinEnergyCut(*caloCluster)) continue;
+ //if(!fSelector->PassMinEnergyCut(*caloCluster)) continue;
+ if(!fSelector->PassMinEnergyCut(fReconstructedE)) continue;
fCutFlow->Fill(cf++);
- Float_t pos[3];
- //PrintFamilyTree(
- caloCluster->GetPosition(pos);
- TVector3 cp(pos);
TParticle *primPart = stack->Particle(primIdx);
fPrimaryCode = primPart->GetPdgCode();
fPrimaryAccepted = false;
fPrimaryMatched = false;
- fDepositedCode = part->GetPdgCode();
fDepositedE = part->Energy();
fDepositedEt = part->Energy()*TMath::Sin(part->Theta());
if(part->GetPDG()) fDepositedCharge = (Int_t) part->GetPDG()->Charge();
fDepositedVx = part->Vx();
fDepositedVy = part->Vy();
fDepositedVz = part->Vz();
- fReconstructedE = caloCluster->E();
- fReconstructedEt = caloCluster->E()*TMath::Sin(cp.Theta());
if(nottrackmatched) subtotalAllEnergy += fReconstructedEt;
fHistFracNeutronsVsNTotalTracks = new TH2F("fHistFracNeutronsVsNTotalTracks","fHistFracNeutronsVsNTotalTracks",nBinsMatchedTracks,lowMatchedTracks,highMatchedTracks,nBinsFrac,fracMin,fracMaxLow);
fHistFracKaonsVsNTotalTracks = new TH2F("fHistFracKaonsVsNTotalTracks","fHistFracKaonsVsNTotalTracks",nBinsMatchedTracks,lowMatchedTracks,highMatchedTracks,nBinsFrac,fracMin,fracMaxLow);
fHistFracSecondariesVsNTotalTracks = new TH2F("fHistFracSecondariesVsNTotalTracks","fHistFracSecondariesVsNTotalTracks",nBinsMatchedTracks,lowMatchedTracks,highMatchedTracks,nBinsFrac,fracMin,fracMax);
+ fHistRCorrVsPtVsCent = new TH3F("fHistRCorrVsPtVsCent","fHistRCorrVsPtVsCent",72,0,2,50,0,10,20,-0.5,19.5);
//NClusters
}
list->Add(fHistFracNeutronsVsNTotalTracks);
list->Add(fHistFracKaonsVsNTotalTracks);
list->Add(fHistFracSecondariesVsNTotalTracks);
+ list->Add(fHistRCorrVsPtVsCent);
}
,fHistCentVsNchVsNclReco(0)
,fHistRawSignalReco(0)
,fHistEffCorrSignalReco(0)
+ ,fHistRecoRCorrVsPtVsCent(0)
{
}
delete fHistCentVsNchVsNclReco;
delete fHistRawSignalReco;
delete fHistEffCorrSignalReco;
+ delete fHistRecoRCorrVsPtVsCent;
}
Int_t AliAnalysisEtReconstructed::AnalyseEvent(AliVEvent* ev)
cluster->GetPosition(pos);
TVector3 cp(pos);
fClusterPositionAll->Fill(cp.Phi(), cp.PseudoRapidity());
- fClusterPositionAllEnergy->Fill(cp.Phi(), cp.PseudoRapidity(),GetCorrectionModification(*cluster,0,0,cent)*cluster->E());
+ Float_t fReconstructedE = cluster->E();
+ fClusterPositionAllEnergy->Fill(cp.Phi(), cp.PseudoRapidity(),GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE);
//if(TMath::Abs(cp.Eta())> fCuts->fCuts->GetGeometryEmcalEtaAccCut() || cp.Phi() > fCuts->GetGeometryEmcalPhiAccMaxCut()*TMath::Pi()/180. || cp.Phi() > fCuts->GetGeometryEmcalPhiAccMinCut()*TMath::Pi()/180.) continue;//Do not accept if cluster is not in the acceptance
- fTotAllRawEt += TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ fTotAllRawEt += TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
fTotAllRawEtEffCorr +=GetCorrectionModification(*cluster,0,0,cent)* CorrectForReconstructionEfficiency(*cluster,cent);
- fClusterEnergyCent->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(),cent);
+ fClusterEnergyCent->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE,cent);
Bool_t matched = kTRUE;//default to no track matched
Int_t trackMatchedIndex = cluster->GetTrackMatchedIndex();//find the index of the matched track
AliESDtrack *track = event->GetTrack(trackMatchedIndex);
//if this is a good track, accept track will return true. The track matched is good, so not track matched is false
matched = fEsdtrackCutsTPC->AcceptTrack(track);//If the track is bad, don't count it
+ if(matched){//if it is still matched see if the track p was less than the energy
+ Float_t rcorr = TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
+ fHistRecoRCorrVsPtVsCent->Fill(rcorr,track->Pt(), fCentClass);
+ if(fReconstructedE - fsub* track->P() > 0.0){
+ fReconstructedE = fReconstructedE - fsub* track->P();
+ matched = kFALSE;
+ }
+ }
}
}
}
else {
totalMatchedPt +=track->Pt();
- fClusterEnergyCentMatched->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(),cent);
+ fClusterEnergyCentMatched->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE,cent);
fHistMatchedClusterSizeVsCent->Fill(cluster->GetNCells(),cent);
float eff = fTmCorrections->TrackMatchingEfficiency(track->Pt(),cent);
//cout<<"pt "<<track->Pt()<<" eff "<<eff<<" total "<<nChargedHadronsTotal<<endl;
nChargedHadronsMeasured++;
nChargedHadronsTotal += 1/eff;
- Double_t effCorrEt = GetCorrectionModification(*cluster,0,0,cent) * CorrectForReconstructionEfficiency(*cluster,cent);
- nChargedHadronsEtMeasured+= TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ Double_t effCorrEt = GetCorrectionModification(*cluster,0,0,cent) * CorrectForReconstructionEfficiency(*cluster,fReconstructedE,cent);
+ nChargedHadronsEtMeasured+= TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
//One efficiency is the gamma efficiency and the other is the track matching efficiency.
- nChargedHadronsEtTotal+= 1/eff *TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
- //cout<<"nFound "<<1<<" nFoundTotal "<<1/eff<<" etMeas "<<TMath::Sin(cp.Theta())*cluster->E()<<" ET total "<< 1/eff *TMath::Sin(cp.Theta())*cluster->E()<<endl;
+ nChargedHadronsEtTotal+= 1/eff *TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
+ //cout<<"nFound "<<1<<" nFoundTotal "<<1/eff<<" etMeas "<<TMath::Sin(cp.Theta())*fReconstructedE<<" ET total "<< 1/eff *TMath::Sin(cp.Theta())*fReconstructedE<<endl;
Float_t nSigmaPion = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion);
Float_t nSigmaProton = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton);
bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && track->Pt()<0.9);
//cout<<"NSigmaProton "<<nSigmaProton<<endl;
etPiKPMatched += effCorrEt;
- etPiKPMatchedNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ etPiKPMatchedNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
if(isProton){
if(track->Charge()>0){
etPIDProtons += effCorrEt;
- etPIDProtonsNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ etPIDProtonsNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
}
else{
- etPIDAntiProtonsNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ etPIDAntiProtonsNoEff +=TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
etPIDAntiProtons += effCorrEt;
}
}
- if(TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E()>0.5){
+ if(TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE>0.5){
nChargedHadronsMeasured500MeV++;
nChargedHadronsTotal500MeV += 1/eff;
- nChargedHadronsEtMeasured500MeV+= TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
- nChargedHadronsEtTotal500MeV+= 1/eff *TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ nChargedHadronsEtMeasured500MeV+= TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
+ nChargedHadronsEtTotal500MeV+= 1/eff *TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
}
- fHistMatchedTracksEvspTvsCent->Fill(track->P(),TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E(),cent);
+ fHistMatchedTracksEvspTvsCent->Fill(track->P(),TMath::Sin(cp.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE,cent);
fHistMatchedTracksEvspTvsCentEffCorr->Fill(track->P(),effCorrEt,cent);
//Weighed by the number of tracks we didn't find
fHistMatchedTracksEvspTvsCentEffTMCorr->Fill(track->P(), effCorrEt,cent, (1/eff-1) );
for(int cbtest = 0; cbtest<20; cbtest++){//then we calculate the deposit matched to hadrons with different centrality bins' efficiencies
float efftest = fTmCorrections->TrackMatchingEfficiency(track->Pt(),cbtest);
if(TMath::Abs(efftest)<1e-5) efftest = 1.0;
- Double_t effCorrEttest = GetCorrectionModification(*cluster,0,0,cent)*CorrectForReconstructionEfficiency(*cluster,cbtest);
+ Double_t effCorrEttest = GetCorrectionModification(*cluster,0,0,cent)*CorrectForReconstructionEfficiency(*cluster,fReconstructedE,cbtest);
fHistPeripheralMatchedTracksEvspTvsCentEffTMCorr->Fill(track->P(), effCorrEttest,cbtest, (1/efftest-1) );
}
}
cluster->GetPosition(pos);
TVector3 p2(pos);
- uncorrEt += TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ uncorrEt += TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
if(uncorrEt>=0.5) fHistMatchedTracksEvspTvsCentEffTMCorr500MeV->Fill(track->P(), effCorrEt,cent, (1/eff-1) );
const Double_t *pidWeights = track->PID();
}
if (fCuts->GetHistMakeTreeDeposit() && fDepositTree)
{
- fEnergyDeposited =GetCorrectionModification(*cluster,0,0,cent)* cluster->E();
+ fEnergyDeposited =GetCorrectionModification(*cluster,0,0,cent)* fReconstructedE;
fMomentumTPC = track->P();
fCharge = track->Charge();
fParticlePid = maxpid;
//Float_t theta = TMath::ATan(pos[2]/dist)+TMath::Pi()/2;
- //Float_t et = cluster->E() * TMath::Sin(theta);
+ //Float_t et = fReconstructedE * TMath::Sin(theta);
if (maxpid == AliPID::kProton)
{
if (track->Charge() == 1)
{
- fHistProtonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(), track->E());
+ fHistProtonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE, track->E());
}
else if (track->Charge() == -1)
{
- fHistAntiProtonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(), track->E());
+ fHistAntiProtonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE, track->E());
}
}
else if (maxpid == AliPID::kPion)
{
- fHistChargedPionEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(), track->E());
+ fHistChargedPionEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE, track->E());
}
else if (maxpid == AliPID::kKaon)
{
- fHistChargedKaonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(), track->E());
+ fHistChargedKaonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE, track->E());
}
else if (maxpid == AliPID::kMuon)
{
- fHistMuonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(), track->E());
+ fHistMuonEnergyDeposit->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE, track->E());
}
}
}
fCutFlow->Fill(x++);
//std::cout << x++ << std::endl;
- //if (cluster->E() > fSingleCellEnergyCut && cluster->GetNCells() == fCuts->GetCommonSingleCell()) continue;
- //if (cluster->E() < fClusterEnergyCut) continue;
+ //if (fReconstructedE > fSingleCellEnergyCut && cluster->GetNCells() == fCuts->GetCommonSingleCell()) continue;
+ //if (fReconstructedE < fClusterEnergyCut) continue;
cluster->GetPosition(pos);
TVector3 p2(pos);
fClusterPositionAccepted->Fill(p2.Phi(), p2.PseudoRapidity());
- fClusterPositionAcceptedEnergy->Fill(p2.Phi(), p2.PseudoRapidity(),GetCorrectionModification(*cluster,0,0,cent)*cluster->E());
- fClusterEnergy->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E());
- fClusterEnergyCentNotMatched->Fill(GetCorrectionModification(*cluster,0,0,cent)*cluster->E(),cent);
+ fClusterPositionAcceptedEnergy->Fill(p2.Phi(), p2.PseudoRapidity(),GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE);
+ fClusterEnergy->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE);
+ fClusterEnergyCentNotMatched->Fill(GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE,cent);
fHistClusterSizeVsCent->Fill(cluster->GetNCells(),cent);
- fClusterEt->Fill(TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E());
- uncorrEt += TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
- float myuncorrEt = TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*cluster->E();
+ fClusterEt->Fill(TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE);
+ uncorrEt += TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
+ float myuncorrEt = TMath::Sin(p2.Theta())*GetCorrectionModification(*cluster,0,0,cent)*fReconstructedE;
fTotRawEt += myuncorrEt;
- Double_t effCorrEt = CorrectForReconstructionEfficiency(*cluster,cent)*GetCorrectionModification(*cluster,0,0,cent);
+ Double_t effCorrEt = CorrectForReconstructionEfficiency(*cluster,fReconstructedE,cent)*GetCorrectionModification(*cluster,0,0,cent);
rawSignal += myuncorrEt;
effCorrSignal +=effCorrEt;
- //cout<<"cluster energy "<<cluster->E()<<" eff corr Et "<<effCorrEt<<endl;
+ //cout<<"cluster energy "<<fReconstructedE<<" eff corr Et "<<effCorrEt<<endl;
fTotRawEtEffCorr += effCorrEt;
fTotNeutralEt += effCorrEt;
nominalRawEt += effCorrEt;
list->Add(fHistCentVsNchVsNclReco);
list->Add(fHistRawSignalReco);
list->Add(fHistEffCorrSignalReco);
+ list->Add(fHistRecoRCorrVsPtVsCent);
}
void AliAnalysisEtReconstructed::CreateHistograms()
fHistRawSignalReco = new TH1F("fHistRawSignalReco","fHistRawSignalReco",20,-0.5,19.5);
fHistEffCorrSignalReco = new TH1F("fHistEffCorrSignalReco","fHistEffCorrSignalReco",20,-0.5,19.5);
+ fHistRecoRCorrVsPtVsCent = new TH3F("fHistRecoRCorrVsPtVsCent","fHistRecoRCorrVsPtVsCent",72,0,2,50,0,10,20,-0.5,19.5);
}
Double_t AliAnalysisEtReconstructed::ApplyModifiedCorrections(const AliESDCaloCluster& cluster,Int_t nonLinCorr, Int_t effCorr, Int_t cent)