,fAntiNeutronCode(0)
,fEPlusCode(0)
,fEMinusCode(0)
+ ,fMuPlusCode(0)
+ ,fMuMinusCode(0)
,fGammaCode(0)
,fPionMass(0)
,fTotEt(0)
,fBaryonEt(0)
,fAntiBaryonEt(0)
,fMesonEt(0)
- ,fBaryonEtAcc(0)
- ,fAntiBaryonEtAcc(0)
- ,fMesonEtAcc(0)
,fProtonEt(0)
,fPionEt(0)
,fChargedKaonEt(0)
,fHistBaryonEt(0)
,fHistAntiBaryonEt(0)
,fHistMesonEt(0)
- ,fHistBaryonEtAcc(0)
- ,fHistAntiBaryonEtAcc(0)
- ,fHistMesonEtAcc(0)
,fHistProtonEt(0)
,fHistPionEt(0)
,fHistChargedKaonEt(0)
,fHistChargedKaonEtAcc(0)
,fHistMuonEtAcc(0)
,fHistElectronEtAcc(0)
- ,fHistEtRecvsEtMC(0)
,fHistTMDeltaR(0)
,fTree(0)
,fTreeDeposit(0)
list->Add(fHistAntiBaryonEt);
list->Add(fHistMesonEt);
- list->Add(fHistBaryonEtAcc);
- list->Add(fHistAntiBaryonEtAcc);
- list->Add(fHistMesonEtAcc);
-
list->Add(fHistProtonEt);
list->Add(fHistPionEt);
list->Add(fHistChargedKaonEt);
list->Add(fHistMuonEtAcc);
list->Add(fHistElectronEtAcc);
- list->Add(fHistEtRecvsEtMC);
-
list->Add(fHistTMDeltaR);
if (fCuts) {
histname = "fHistMesonEt" + fHistogramNameSuffix;
fHistMesonEt = new TH1F(histname.Data(), "E_{T} for mesons", nbinsEt, minEt, maxEt);
- histname = "fHistBaryonEtAcc" + fHistogramNameSuffix;
- fHistBaryonEtAcc = new TH1F(histname.Data(), "E_{T} for baryons in calorimeter acceptance", nbinsEt, minEt, maxEt);
-
- histname = "fHistAntiBaryonEtAcc" + fHistogramNameSuffix;
- fHistAntiBaryonEtAcc = new TH1F(histname.Data(), "E_{T} for anti baryons in calorimeter acceptance", nbinsEt, minEt, maxEt);
-
- histname = "fHistMesonEtAcc" + fHistogramNameSuffix;
- fHistMesonEtAcc = new TH1F(histname.Data(), "E_{T} for mesons in calorimeter acceptance", nbinsEt, minEt, maxEt);
-
histname = "fHistProtonEt" + fHistogramNameSuffix;
fHistProtonEt = new TH1F(histname.Data(), "E_{T} for (anti-)protons", nbinsEt, minEt, maxEt);
histname = "fHistElectronEtAcc" + fHistogramNameSuffix;
fHistElectronEtAcc = new TH1F(histname.Data(), "E_{T} for electrons/positrons in calorimeter acceptance", nbinsEt, minEt, maxEt);
- histname = "fHistEtRecvsEtMC" + fHistogramNameSuffix;
- fHistEtRecvsEtMC = new TH2F(histname.Data(), "Reconstructed E_{t} vs MC E_{t}", nbinsEt, minEt, maxEt, nbinsEt, minEt, maxEt);
-
//
histname = "fHistTMDeltaR" + fHistogramNameSuffix;
fHistTMDeltaR = new TH1F(histname.Data(), "#Delta R for calorimeter clusters", 200, 0, 50);
fTree->Branch("fBaryonEt",&fBaryonEt,"fBaryonEt/D");
fTree->Branch("fAntiBaryonEt",&fAntiBaryonEt,"fAntiBaryonEt/D");
fTree->Branch("fMesonEt",&fMesonEt,"fMesonEt/D");
- fTree->Branch("fBaryonEtAcc",&fBaryonEtAcc,"fBaryonEtAcc/D");
- fTree->Branch("fAntiBaryonEtAcc",&fAntiBaryonEtAcc,"fAntiBaryonEtAcc/D");
- fTree->Branch("fMesonEtAcc",&fMesonEtAcc,"fMesonEtAcc/D");
fTree->Branch("fProtonEt",&fProtonEt,"fProtonEt/D");
fTree->Branch("fChargedKaonEt",&fChargedKaonEt,"fChargedKaonEt/D");
fTree->Branch("fMuonEt",&fMuonEt,"fMuonEt/D");
fTreeDeposit->Branch("fTrackPassedCut", &fTrackPassedCut, "fTrackPassedCut/B");
}
+
return;
}
void AliAnalysisEt::FillHistograms()
fHistAntiBaryonEt->Fill(fAntiBaryonEt);
fHistMesonEt->Fill(fMesonEt);
- fHistBaryonEtAcc->Fill(fBaryonEtAcc);
- fHistAntiBaryonEtAcc->Fill(fAntiBaryonEtAcc);
- fHistMesonEtAcc->Fill(fMesonEtAcc);
-
fHistProtonEt->Fill(fProtonEt);
fHistPionEt->Fill(fPionEt);
fHistChargedKaonEt->Fill(fChargedKaonEt);
fBaryonEt = 0;
fAntiBaryonEt = 0;
fMesonEt = 0;
- fBaryonEtAcc = 0;
- fAntiBaryonEtAcc = 0;
- fMesonEtAcc = 0;
fProtonEt = 0;
+ fPionEt = 0;
fChargedKaonEt = 0;
fMuonEt = 0;
fElectronEt = 0;
+ fNeutronEt = 0;
+ fAntiNeutronEt = 0;
+ fGammaEt = 0;
fProtonEtAcc = 0;
+ fPionEtAcc = 0;
fChargedKaonEtAcc = 0;
fMuonEtAcc = 0;
fElectronEtAcc = 0;
- fNeutronEt = 0;
- fAntiNeutronEt = 0;
- fGammaEt = 0;
if (!fCuts || !fPdgDB || fPiPlusCode==0) { // some Init's needed
cout << __FILE__ << ":" << __LINE__ << " : Init " << endl;
fAntiNeutronCode = fPdgDB->GetParticle("antineutron")->PdgCode();
fEPlusCode = fPdgDB->GetParticle("e+")->PdgCode();
fEMinusCode = fPdgDB->GetParticle("e-")->PdgCode();
+ fMuPlusCode = fPdgDB->GetParticle("mu+")->PdgCode();
+ fMuMinusCode = fPdgDB->GetParticle("mu-")->PdgCode();
fGammaCode = fPdgDB->GetParticle("gamma")->PdgCode();
cout << "Resetting Codes: Pion " << fPiPlusCode
Int_t fAntiNeutronCode;//pdg anti-neutron code
Int_t fEPlusCode;//pdg positron code
Int_t fEMinusCode;//pdg electron code
+ Int_t fMuPlusCode; // pdg muon + code
+ Int_t fMuMinusCode; // pdg muon - code
Int_t fGammaCode; // pdg gamma code
Float_t fPionMass;//pdg pion mass
Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
- Double_t fBaryonEt; /** Et of identified baryons */
- Double_t fAntiBaryonEt; /** Et of identified anti-baryons */
- Double_t fMesonEt; /** Et of identified mesons */
+ Double_t fBaryonEt; /** Et of identified baryons; calo based (Rec only for now) */
+ Double_t fAntiBaryonEt; /** Et of identified anti-baryons; calo based (Rec only for now) */
+ Double_t fMesonEt; /** Et of identified mesons; calo based (Rec only for now) */
- Double_t fBaryonEtAcc; /** Et of identified baryons in calorimeter acceptance */
- Double_t fAntiBaryonEtAcc; /** Et of identified anti-baryons in calorimeter acceptance */
- Double_t fMesonEtAcc; /** Et of identified mesons in calorimeter acceptance */
-
Double_t fProtonEt; /** Et of identified protons */
Double_t fPionEt; /** Et of identified pions */
Double_t fChargedKaonEt; /** Et of identified charged kaons */
TH1F *fHistAntiBaryonEt; /** Et of identified anti-baryons */
TH1F *fHistMesonEt; /** Et of identified mesons */
- TH1F *fHistBaryonEtAcc; /** Et of identified baryons in calorimeter acceptance */
- TH1F *fHistAntiBaryonEtAcc; /** Et of identified anti-baryons in calorimeter acceptance */
- TH1F *fHistMesonEtAcc; /** Et of identified mesons in calorimeter acceptance */
-
TH1F *fHistProtonEt; /** Et of identified protons */
TH1F *fHistPionEt; /** Et of identified protons */
TH1F *fHistChargedKaonEt; /** Et of identified charged kaons */
TH1F *fHistElectronEtAcc; /** Et of identified electrons in calorimeter acceptance */
/* Correction plots */
- TH2F *fHistEtRecvsEtMC; //Reconstructed Et versus MC Et
-
- TH1F *fHistTMDeltaR; /* Track matching plots */
+ TH1F *fHistTMDeltaR; /* Track matching plots; Rec only for now */
TTree *fTree; // optional TTree
TTree *fTreeDeposit; // optional TTree for energy deposit measurements
Int_t nPrim = stack->GetNtrack();
- Double_t particleMassPart = 0; //The mass part in the Et calculation for this particle
-
for (Int_t iPart = 0; iPart < nPrim; iPart++)
{
continue;
}
- TParticlePDG *pc = part->GetPDG(0);
+ TParticlePDG *pdg = part->GetPDG(0);
+
+ Double_t particleMassPart = 0; //The mass part in the Et calculation for this particle
// Check if it is a primary particle
if (!stack->IsPhysicalPrimary(iPart)) continue;
- // printf("MC: iPart %03d eta %4.3f phi %4.3f code %d charge %g \n", iPart, part->Eta(), part->Phi(), pc->PdgCode(), pc->Charge()); // tmp/debug printout
+ // printf("MC: iPart %03d eta %4.3f phi %4.3f code %d charge %g \n", iPart, part->Eta(), part->Phi(), pdg->PdgCode(), pdg->Charge()); // tmp/debug printout
// Check for reasonable (for now neutral and singly charged) charge on the particle
//TODO:Maybe not only singly charged?
- if (TMath::Abs(pc->Charge()) != fCuts->GetMonteCarloSingleChargedParticle() && pc->Charge() != fCuts->GetMonteCarloNeutralParticle()) continue;
+ if (TMath::Abs(pdg->Charge()) != fCuts->GetMonteCarloSingleChargedParticle() && pdg->Charge() != fCuts->GetMonteCarloNeutralParticle()) continue;
fMultiplicity++;
if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut())
{
- TParticlePDG *pdgCode = part->GetPDG(0);
if (
- TMath::Abs(pdgCode->PdgCode()) == fProtonCode ||
- TMath::Abs(pdgCode->PdgCode()) == fNeutronCode ||
- TMath::Abs(pdgCode->PdgCode()) == fLambdaCode ||
- TMath::Abs(pdgCode->PdgCode()) == fXiCode ||
- TMath::Abs(pdgCode->PdgCode()) == fXi0Code ||
- TMath::Abs(pdgCode->PdgCode()) == fOmegaCode
+ TMath::Abs(pdg->PdgCode()) == fProtonCode ||
+ TMath::Abs(pdg->PdgCode()) == fNeutronCode ||
+ TMath::Abs(pdg->PdgCode()) == fLambdaCode ||
+ TMath::Abs(pdg->PdgCode()) == fXiCode ||
+ TMath::Abs(pdg->PdgCode()) == fXi0Code ||
+ TMath::Abs(pdg->PdgCode()) == fOmegaCode
)
{
- particleMassPart = -TMath::Sign(pdgCode->PdgCode(), pdgCode->PdgCode())*pdgCode->Mass();
+ if (pdg->PdgCode() > 0) { particleMassPart = - pdg->Mass();}
+ if (pdg->PdgCode() < 0) { particleMassPart = pdg->Mass();}
}
- if(pdgCode->PdgCode() == fNeutronCode)
+ Double_t et = part->Energy() * TMath::Sin(part->Theta()) + particleMassPart;
+
+ if (pdg->PdgCode() == fProtonCode || pdg->PdgCode() == fAntiProtonCode)
+ {
+ fProtonEt += et;
+ }
+ if (pdg->PdgCode() == fPiPlusCode || pdg->PdgCode() == fPiMinusCode)
+ {
+ fPionEt += et;
+ }
+ if (pdg->PdgCode() == fKPlusCode || pdg->PdgCode() == fKMinusCode)
+ {
+ fChargedKaonEt += et;
+ }
+ if (pdg->PdgCode() == fMuPlusCode || pdg->PdgCode() == fMuMinusCode)
+ {
+ fMuonEt += et;
+ }
+ if (pdg->PdgCode() == fEPlusCode || pdg->PdgCode() == fEMinusCode)
+ {
+ fElectronEt += et;
+ }
+
+ // some neutrals also
+ if(pdg->PdgCode() == fNeutronCode)
{
- fNeutronEt += part->Energy()*TMath::Sin(part->Theta()) - pdgCode->Mass();
+ fNeutronEt += et;
}
- if(pdgCode->PdgCode() == fAntiNeutronCode)
+ if(pdg->PdgCode() == fAntiNeutronCode)
{
- fAntiNeutronEt += part->Energy()*TMath::Sin(part->Theta()) + pdgCode->Mass();
+ fAntiNeutronEt += et;
}
- if(pdgCode->PdgCode() == fGammaCode)
+ if(pdg->PdgCode() == fGammaCode)
{
- fGammaEt += part->Energy()*TMath::Sin(part->Theta());
+ fGammaEt += et;
}
- if (pdgCode->Charge() == fCuts->GetMonteCarloNeutralParticle() )
+
+ if (pdg->Charge() == fCuts->GetMonteCarloNeutralParticle() )
{
fNeutralMultiplicity++;
- fTotNeutralEt += part->Energy()*TMath::Sin(part->Theta());
+ fTotNeutralEt += et;
if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin)
{
- fTotNeutralEtAcc += part->Energy()*TMath::Sin(part->Theta());
- fTotEtAcc += part->Energy()*TMath::Sin(part->Theta());
+ fTotNeutralEtAcc += et;
+ fTotEtAcc += et;
}
}
- else if (pdgCode->Charge() != fCuts->GetMonteCarloNeutralParticle() )
+ else if (pdg->Charge() != fCuts->GetMonteCarloNeutralParticle() )
{
fChargedMultiplicity++;
- fTotChargedEt += part->Energy()*TMath::Sin(part->Theta());
+ fTotChargedEt += et;
if (TMath::Abs(part->Eta()) < fEtaCutAcc && part->Phi() < fPhiCutAccMax && part->Phi() > fPhiCutAccMin)
{
- fTotChargedEtAcc += part->Energy()*TMath::Sin(part->Theta());
- fTotEtAcc += part->Energy()*TMath::Sin(part->Theta());
+ fTotChargedEtAcc += et;
+ fTotEtAcc += et;
+
+
+ if (pdg->PdgCode() == fProtonCode || pdg->PdgCode() == fAntiProtonCode)
+ {
+ fProtonEtAcc += et;
+ }
+ if (pdg->PdgCode() == fPiPlusCode || pdg->PdgCode() == fPiMinusCode)
+ {
+ fPionEtAcc += et;
+ }
+ if (pdg->PdgCode() == fKPlusCode || pdg->PdgCode() == fKMinusCode)
+ {
+ fChargedKaonEtAcc += et;
+ }
+ if (pdg->PdgCode() == fMuPlusCode || pdg->PdgCode() == fMuMinusCode)
+ {
+ fMuonEtAcc += et;
+ }
+ if (pdg->PdgCode() == fEPlusCode || pdg->PdgCode() == fEMinusCode)
+ {
+ fElectronEtAcc += et;
+ }
+
}
// if (TrackHitsCalorimeter(part, event->GetMagneticField()))
if (TrackHitsCalorimeter(part)) // magnetic field info not filled?
{
- if (pdgCode->Charge() > 0) fHistPhivsPtPos->Fill(part->Phi(),part->Pt());
+ if (pdg->Charge() > 0) fHistPhivsPtPos->Fill(part->Phi(),part->Pt());
else fHistPhivsPtNeg->Fill(part->Phi(), part->Pt());
}
}
}
}
- fTotNeutralEtAcc = fTotNeutralEt;
fTotEt = fTotChargedEt + fTotNeutralEt;
fTotEtAcc = fTotChargedEtAcc + fTotNeutralEtAcc;