X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FCheckESD.C;h=1f700d32b409b3c59f8f36feb6110839cd575313;hb=3db9616b6abacad6650ea1e7bf1c81cfc1aa12b6;hp=6f1ea707a13956861a881006f79b5214976d990e;hpb=f980f8fb079de6ed6fad1ea9959d43dbde54e7fb;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/CheckESD.C b/STEER/CheckESD.C index 6f1ea707a13..1f700d32b40 100644 --- a/STEER/CheckESD.C +++ b/STEER/CheckESD.C @@ -1,4 +1,5 @@ #if !defined( __CINT__) || defined(__MAKECINT__) +#include #include #include #include @@ -7,20 +8,22 @@ #include #include #include +#include #include "AliRunLoader.h" #include "AliLoader.h" -#include "AliESD.h" +#include "AliESDEvent.h" +#include "AliESDv0.h" +#include "AliESDcascade.h" +#include "AliESDMuonTrack.h" +#include "AliESDCaloCluster.h" #include "AliRun.h" #include "AliStack.h" #include "AliHeader.h" #include "AliGenEventHeader.h" -#else -const Int_t kXiMinus = 3312; -const Int_t kOmegaMinus = 3334; +#include "AliPID.h" #endif - TH1F* CreateHisto(const char* name, const char* title, Int_t nBins, Double_t xMin, Double_t xMax, const char* xLabel = NULL, const char* yLabel = NULL) @@ -155,8 +158,15 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", Error("CheckESD", "opening ESD file %s failed", esdFileName); return kFALSE; } + AliESDEvent * esd = new AliESDEvent; + TTree* tree = (TTree*) esdFile->Get("esdTree"); + if (!tree) { + Error("CheckESD", "no ESD tree found"); + return kFALSE; + } + esd->ReadFromTree(tree); - // efficienc and resolution histograms + // efficiency and resolution histograms Int_t nBinsPt = 15; Float_t minPt = 0.1; Float_t maxPt = 3.1; @@ -176,15 +186,15 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", "#theta_{rec}-#theta_{sim} [mrad]", "N"); // PID - Int_t partCode[AliESDtrack::kSPECIES] = + Int_t partCode[AliPID::kSPECIES] = {kElectron, kMuonMinus, kPiPlus, kKPlus, kProton}; - const char* partName[AliESDtrack::kSPECIES+1] = + const char* partName[AliPID::kSPECIES+1] = {"electron", "muon", "pion", "kaon", "proton", "other"}; - Double_t partFrac[AliESDtrack::kSPECIES] = + Double_t partFrac[AliPID::kSPECIES] = {0.01, 0.01, 0.85, 0.10, 0.05}; - Int_t identified[AliESDtrack::kSPECIES+1][AliESDtrack::kSPECIES]; - for (Int_t iGen = 0; iGen < AliESDtrack::kSPECIES+1; iGen++) { - for (Int_t iRec = 0; iRec < AliESDtrack::kSPECIES; iRec++) { + Int_t identified[AliPID::kSPECIES+1][AliPID::kSPECIES]; + for (Int_t iGen = 0; iGen < AliPID::kSPECIES+1; iGen++) { + for (Int_t iRec = 0; iRec < AliPID::kSPECIES; iRec++) { identified[iGen][iRec] = 0; } } @@ -211,8 +221,8 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", hResTOFWrong->SetLineColor(kRed); // calorimeters - TH1F* hEPHOS = CreateHisto("hEPHOS", "PHOS", 100, 0, 5, "E [GeV]", "N"); - TH1F* hEEMCAL = CreateHisto("hEEMCAL", "EMCAL", 100, 0, 2, "E [GeV]", "N"); + TH1F* hEPHOS = CreateHisto("hEPHOS", "PHOS", 100, 0, 50, "E [GeV]", "N"); + TH1F* hEEMCAL = CreateHisto("hEEMCAL", "EMCAL", 100, 0, 50, "E [GeV]", "N"); // muons TH1F* hPtMUON = CreateHisto("hPtMUON", "MUON", 100, 0, 20, @@ -240,7 +250,7 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", runLoader->GetEvent(iEvent); // select simulated primary particles, V0s and cascades - AliStack* stack = gAlice->Stack(); + AliStack* stack = runLoader->Stack(); Int_t nParticles = stack->GetNtrack(); TArrayF vertex(3); runLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vertex); @@ -291,9 +301,7 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", } // get the event summary data - char esdName[256]; - sprintf(esdName, "ESD%d", iEvent); - AliESD* esd = (AliESD*) esdFile->Get(esdName); + tree->GetEvent(iEvent); if (!esd) { Error("CheckESD", "no ESD object found for event %d", iEvent); return kFALSE; @@ -317,25 +325,22 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", if (track->GetLabel() < 0) nFake++; // resolutions - Double_t p[3]; - track->GetConstrainedPxPyPz(p); - TVector3 pTrack(p); - hResPtInv->Fill(100. * (1./pTrack.Pt() - 1./particle->Pt()) * + hResPtInv->Fill(100. * (TMath::Abs(track->GetSigned1Pt()) - 1./particle->Pt()) * particle->Pt()); - hResPhi->Fill(1000. * (pTrack.Phi() - particle->Phi())); - hResTheta->Fill(1000. * (pTrack.Theta() - particle->Theta())); + hResPhi->Fill(1000. * (track->Phi() - particle->Phi())); + hResTheta->Fill(1000. * (track->Theta() - particle->Theta())); // PID if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) continue; Int_t iGen = 5; - for (Int_t i = 0; i < AliESDtrack::kSPECIES; i++) { + for (Int_t i = 0; i < AliPID::kSPECIES; i++) { if (TMath::Abs(particle->GetPdgCode()) == partCode[i]) iGen = i; } - Double_t probability[AliESDtrack::kSPECIES]; + Double_t probability[AliPID::kSPECIES]; track->GetESDpid(probability); Double_t pMax = 0; Int_t iRec = 0; - for (Int_t i = 0; i < AliESDtrack::kSPECIES; i++) { + for (Int_t i = 0; i < AliPID::kSPECIES; i++) { probability[i] *= partFrac[i]; if (probability[i] > pMax) { pMax = probability[i]; @@ -346,35 +351,21 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", if (iGen == iRec) nIdentified++; // dE/dx and TOF - Double_t time[AliESDtrack::kSPECIES]; + Double_t time[AliPID::kSPECIES]; track->GetIntegratedTimes(time); if (iGen == iRec) { - hDEdxRight->Fill(pTrack.Mag(), track->GetTPCsignal()); + hDEdxRight->Fill(particle->P(), track->GetTPCsignal()); if ((track->GetStatus() & AliESDtrack::kTOFpid) != 0) { hResTOFRight->Fill(track->GetTOFsignal() - time[iRec]); } } else { - hDEdxWrong->Fill(pTrack.Mag(), track->GetTPCsignal()); + hDEdxWrong->Fill(particle->P(), track->GetTPCsignal()); if ((track->GetStatus() & AliESDtrack::kTOFpid) != 0) { hResTOFWrong->Fill(track->GetTOFsignal() - time[iRec]); } } } - // loop over calo tracks - for (Int_t iTrack = 0; iTrack < esd->GetNumberOfCaloTracks(); iTrack++) { - AliESDCaloTrack* caloTrack = esd->GetCaloTrack(iTrack); - TParticle* recParticle = caloTrack->GetRecParticle(); - if (recParticle->InheritsFrom("AliPHOSRecParticle")) { - hEPHOS->Fill(recParticle->Energy()); - } else if (recParticle->InheritsFrom("AliEMCALRecParticle")) { - hEEMCAL->Fill(recParticle->Energy()); - } else { - Warning("CheckESD", "unknown calo particle"); - recParticle->Dump(); - } - } - // loop over muon tracks { for (Int_t iTrack = 0; iTrack < esd->GetNumberOfMuonTracks(); iTrack++) { @@ -389,6 +380,7 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", // loop over V0s for (Int_t iV0 = 0; iV0 < esd->GetNumberOfV0s(); iV0++) { AliESDv0* v0 = esd->GetV0(iV0); + if (v0->GetOnFlyStatus()) continue; v0->ChangeMassHypothesis(kK0Short); hMassK0->Fill(v0->GetEffMass()); v0->ChangeMassHypothesis(kLambda0); @@ -416,9 +408,9 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", AliESDcascade* cascade = esd->GetCascade(iCascade); Double_t v0q; cascade->ChangeMassHypothesis(v0q,kXiMinus); - hMassXi->Fill(cascade->GetEffMass()); + hMassXi->Fill(cascade->GetEffMassXi()); cascade->ChangeMassHypothesis(v0q,kOmegaMinus); - hMassOmega->Fill(cascade->GetEffMass()); + hMassOmega->Fill(cascade->GetEffMassXi()); Int_t negLabel = TMath::Abs(esd->GetTrack(cascade->GetNindex()) ->GetLabel()); @@ -442,6 +434,16 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", selCascades.Remove(particle); nRecCascades++; } + + // loop over the clusters + { + for (Int_t iCluster=0; iClusterGetNumberOfCaloClusters(); iCluster++) { + AliESDCaloCluster * clust = esd->GetCaloCluster(iCluster); + if (clust->IsPHOS()) hEPHOS->Fill(clust->E()); + if (clust->IsEMCAL()) hEEMCAL->Fill(clust->E()); + } + } + } // perform checks @@ -512,13 +514,13 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", } printf("%9s:", "gen\\rec"); - for (Int_t iRec = 0; iRec < AliESDtrack::kSPECIES; iRec++) { + for (Int_t iRec = 0; iRec < AliPID::kSPECIES; iRec++) { printf("%9s", partName[iRec]); } printf("\n"); - for (Int_t iGen = 0; iGen < AliESDtrack::kSPECIES+1; iGen++) { + for (Int_t iGen = 0; iGen < AliPID::kSPECIES+1; iGen++) { printf("%9s:", partName[iGen]); - for (Int_t iRec = 0; iRec < AliESDtrack::kSPECIES; iRec++) { + for (Int_t iRec = 0; iRec < AliPID::kSPECIES; iRec++) { printf("%9d", identified[iGen][iRec]); } printf("\n"); @@ -677,6 +679,7 @@ Bool_t CheckESD(const char* gAliceFileName = "galice.root", delete hMassXi; delete hMassOmega; + delete esd; esdFile->Close(); delete esdFile;