X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliJetKineReader.cxx;h=4fd19fb1b806e1e4b63286d8f6c3c3f4c08a159a;hb=8a764dbc2f218b096785933442e609192c4b255d;hp=318f4d5255aaffab37e052a48c500dc1f21a47d7;hpb=ae24a5a1818012f757948116268623c6140caf05;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliJetKineReader.cxx b/JETAN/AliJetKineReader.cxx index 318f4d5255a..4fd19fb1b80 100644 --- a/JETAN/AliJetKineReader.cxx +++ b/JETAN/AliJetKineReader.cxx @@ -30,6 +30,7 @@ #include // From AliRoot ... #include "AliAODJet.h" +#include "AliPDG.h" #include "AliJetKineReaderHeader.h" #include "AliJetKineReader.h" #include "AliMCEventHandler.h" @@ -44,7 +45,7 @@ ClassImp(AliJetKineReader) AliJetKineReader::AliJetKineReader(): AliJetReader(), fAliHeader(0), - fMCEventHandler(0), + fMCEvent(0), fGenJets(0) { // Default constructor @@ -55,7 +56,10 @@ AliJetKineReader::AliJetKineReader(): AliJetKineReader::~AliJetKineReader() { // Destructor - delete fAliHeader; + if (fAliHeader) { + delete fAliHeader; + fAliHeader = 0; + } } //____________________________________________________________________________ @@ -79,7 +83,7 @@ Bool_t AliJetKineReader::FillMomentumArray() ClearArray(); // Get the stack - AliStack* stack = fMCEventHandler->MCEvent()->Stack(); + AliStack* stack = fMCEvent->Stack(); // Number of primaries Int_t nt = stack->GetNprimary(); @@ -87,7 +91,7 @@ Bool_t AliJetKineReader::FillMomentumArray() Double_t ptMin = ((AliJetKineReaderHeader*) fReaderHeader)->GetPtCut(); Float_t etaMin = fReaderHeader->GetFiducialEtaMin(); Float_t etaMax = fReaderHeader->GetFiducialEtaMax(); - fAliHeader = fMCEventHandler->MCEvent()->Header(); + fAliHeader = fMCEvent->Header(); TLorentzVector p4; @@ -107,6 +111,15 @@ Bool_t AliJetKineReader::FillMomentumArray() Float_t p0 = p; Float_t eta = part->Eta(); Float_t phi = part->Phi(); + + + if (((AliJetKineReaderHeader*)fReaderHeader)->ChargedOnly()) { + // Charged particles only + Float_t charge = + TDatabasePDG::Instance()->GetParticle(pdg)->Charge(); + if (charge == 0) continue; + } // End charged only + // Fast simulation of TPC if requested if (((AliJetKineReaderHeader*)fReaderHeader)->FastSimTPC()) { @@ -140,7 +153,23 @@ Bool_t AliJetKineReader::FillMomentumArray() Float_t px = r * part->Px(); Float_t py = r * part->Py(); Float_t pz = r * part->Pz(); - Float_t m = part->GetMass(); + TParticlePDG *pPDG = part->GetPDG(); + Float_t m = 0; + if(!pPDG){ + // this is very rare... + // Is avoided by AliPDG::AddParticlesToPdgDataBase(); + // but this should be called only once... (how in proof?) + // Calucluate mass with unsmeared momentum values + m = part->Energy()*part->Energy() - + (px * px + py * py + pz * pz)/r/r; + if(m>0)m = TMath::Sqrt(m); + else m = 0; + AliInfo(Form("Unknown Particle using %d calculated mass m = %3.3f",part->GetPdgCode(),m)); + + } + else{ + m = pPDG->Mass(); + } Float_t e = TMath::Sqrt(px * px + py * py + pz * pz + m * m); p4 = TLorentzVector(px, py, pz, e); if ( (p4.Eta()>etaMax) || (p4.Eta()