Added PDG db. updater, complete information in the header plus minor fixes
authorpostrow <postrow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 3 Aug 2009 11:35:01 +0000 (11:35 +0000)
committerpostrow <postrow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 3 Aug 2009 11:35:01 +0000 (11:35 +0000)
EPOS/AliGenEpos.cxx
EPOS/AliGenEposEventHeader.cxx
EPOS/AliGenEposEventHeader.h
EPOS/CMake_libEPOS.txt
EPOS/EPOSLinkDef.h
EPOS/TEpos.cxx
EPOS/TEpos.h
EPOS/libEPOS.pkg

index dbf83eb..46d7a7b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * AliGenEpos.cpp
+ * AliGenEpos.cxx
  *
  *  ALICE event generator based on EPOS model from Klaus Werner
  *
@@ -10,6 +10,7 @@
 #include "AliGenEpos.h"
 #include "TEpos.h"
 #include "TParticle.h"
+#include "TMath.h"
 #include "AliLog.h"
 #include "AliGenEventHeader.h"
 #include "AliGenEposEventHeader.h"
@@ -20,7 +21,7 @@ AliGenEpos::AliGenEpos() : AliGenMC(),
                fBmin(0),
                fBmax(10000),
                fPhiMin(0),
-               fPhiMax(2*3.1415926),
+               fPhiMax(TMath::TwoPi()),
                fFilterModelOutput(kFALSE) {
        SetMC(new TEpos());
 }
@@ -29,7 +30,7 @@ AliGenEpos::AliGenEpos(Int_t npart) : AliGenMC(npart),
                fBmin(0),
                fBmax(10000),
                fPhiMin(0),
-               fPhiMax(2*3.1415926),
+               fPhiMax(TMath::TwoPi()),
                fFilterModelOutput(kFALSE) {
        SetMC(new TEpos());
 }
@@ -53,7 +54,7 @@ void AliGenEpos::Generate() {
          Float_t polar[3]   =   {0,0,0};
          Float_t origin0[3]  =   {0,0,0};
          Float_t origin[3]   =   {0,0,0};
-
+         fNprimaries = 0;
          Int_t nt  = 0; //output parameter for PushTrack
 
          Vertex();
@@ -76,7 +77,7 @@ void AliGenEpos::Generate() {
                  iparticle = (TParticle *) fParticles.At(i);
                  //Bool_t isNullEntry = iparticle->GetStatusCode() == 0;
                  //Bool_t isCommentOrUnknown = iparticle->GetStatusCode() > 2;
-                 Bool_t hasDecayed = iparticle->GetStatusCode() == 2;
+                 Bool_t hasDecayed = iparticle->GetStatusCode() >= 2;
                  Bool_t isFinalState = iparticle->GetStatusCode() == 1;
                  Int_t imo = iparticle->GetFirstMother();
                  Bool_t  hasMother = (imo >=0);
@@ -157,6 +158,7 @@ void AliGenEpos::Generate() {
 
        // Event Vertex
          header->SetPrimaryVertex(fVertex);
+         header->FillInternalFields(GetTEpos());
          AddHeader(header);
          fCollisionGeometry = (AliGenEposEventHeader*)  header;
 
index 8072643..c4478be 100644 (file)
  */
 
 #include "AliGenEposEventHeader.h"
+#include "TEpos.h"
+
 ClassImp(AliGenEposEventHeader)
 
 AliGenEposEventHeader::AliGenEposEventHeader(const char* name):
-    AliGenEventHeader(name)
+    AliGenEventHeader(name),
+    fBimevt(0),
+    fPhievt(0),
+    fKolevt(0),
+    fKoievt(0),
+    fPmxevt(0),
+    fEgyevt(0),
+    fNpjevt(0),
+    fNtgevt(0),
+    fNpnevt(0),
+    fNppevt(0),
+    fNtnevt(0),
+    fNtpevt(0),
+    fJpnevt(0),
+    fJppevt(0),
+    fJtnevt(0),
+    fJtpevt(0),
+    fXbjevt(0),
+    fQsqevt(0),
+    fNglevt(0),
+    fZppevt(0),
+    fZptevt(0)
+{
+
+}
+
+AliGenEposEventHeader::AliGenEposEventHeader() :     fBimevt(0),
+    fPhievt(0),
+    fKolevt(0),
+    fKoievt(0),
+    fPmxevt(0),
+    fEgyevt(0),
+    fNpjevt(0),
+    fNtgevt(0),
+    fNpnevt(0),
+    fNppevt(0),
+    fNtnevt(0),
+    fNtpevt(0),
+    fJpnevt(0),
+    fJppevt(0),
+    fJtnevt(0),
+    fJtpevt(0),
+    fXbjevt(0),
+    fQsqevt(0),
+    fNglevt(0),
+    fZppevt(0),
+    fZptevt(0)
 {
 
 }
 
-AliGenEposEventHeader::AliGenEposEventHeader() {
+void AliGenEposEventHeader::FillInternalFields(TEpos *epos) {
+    fBimevt = epos->GetBimevt();
+    fPhievt = epos->GetPhievt();
+    fKolevt = epos->GetKolevt();
+    fKoievt = epos->GetKoievt();
+    fPmxevt = epos->GetPmxevt();
+    fEgyevt = epos->GetEgyevt();
+    fNpjevt = epos->GetNpjevt();
+    fNtgevt = epos->GetNtgevt();
+    fNpnevt = epos->GetNpnevt();
+    fNppevt = epos->GetNppevt();
+    fNtnevt = epos->GetNtnevt();
+    fNtpevt = epos->GetNtpevt();
+    fJpnevt = epos->GetJpnevt();
+    fJppevt = epos->GetJppevt();
+    fJtnevt = epos->GetJtnevt();
+    fJtpevt = epos->GetJtpevt();
+    fXbjevt = epos->GetXbjevt();
+    fQsqevt = epos->GetQsqevt();
+    fNglevt = epos->GetNglevt();
+    fZppevt = epos->GetZppevt();
+    fZptevt = epos->GetZptevt();
 
 }
 
+Float_t AliGenEposEventHeader::GetBimevt() { return fBimevt; }
+Float_t AliGenEposEventHeader::GetPhievt() { return fPhievt; }
+Int_t AliGenEposEventHeader::GetKolevt() { return fKolevt; }
+Int_t AliGenEposEventHeader::GetKoievt() { return fKoievt; }
+Float_t AliGenEposEventHeader::GetPmxevt() { return fPmxevt; }
+Float_t AliGenEposEventHeader::GetEgyevt() { return fEgyevt; }
+Int_t AliGenEposEventHeader::GetNpjevt() { return fNpjevt; }
+Int_t AliGenEposEventHeader::GetNtgevt() { return fNtgevt; }
+Int_t AliGenEposEventHeader::GetNpnevt() { return fNpnevt; }
+Int_t AliGenEposEventHeader::GetNppevt() { return fNppevt; }
+Int_t AliGenEposEventHeader::GetNtnevt() { return fNtnevt; }
+Int_t AliGenEposEventHeader::GetNtpevt() { return fNtpevt; }
+Int_t AliGenEposEventHeader::GetJpnevt() { return fJpnevt; }
+Int_t AliGenEposEventHeader::GetJppevt() { return fJppevt; }
+Int_t AliGenEposEventHeader::GetJtnevt() { return fJtnevt; }
+Int_t AliGenEposEventHeader::GetJtpevt() { return fJtpevt; }
+Float_t AliGenEposEventHeader::GetXbjevt() { return fXbjevt; }
+Float_t AliGenEposEventHeader::GetQsqevt() { return fQsqevt; }
+Int_t AliGenEposEventHeader::GetNglevt() { return fNglevt; }
+Float_t AliGenEposEventHeader::GetZppevt() { return fZppevt; }
+Float_t AliGenEposEventHeader::GetZptevt() { return fZptevt; }
+
index d18cca5..1004831 100644 (file)
@@ -12,6 +12,8 @@
 #include "AliGenEventHeader.h"
 #include "AliCollisionGeometry.h"
 
+class TEpos;
+
 class AliGenEposEventHeader : public AliGenEventHeader, public AliCollisionGeometry
 {
 public:
@@ -19,11 +21,58 @@ public:
        AliGenEposEventHeader();
        virtual ~AliGenEposEventHeader() {}
 
+       Float_t GetBimevt();
+       Float_t GetPhievt();
+       Int_t GetKolevt();
+       Int_t GetKoievt();
+       Float_t GetPmxevt();
+       Float_t GetEgyevt();
+       Int_t GetNpjevt();
+       Int_t GetNtgevt();
+       Int_t GetNpnevt();
+       Int_t GetNppevt();
+       Int_t GetNtnevt();
+       Int_t GetNtpevt();
+       Int_t GetJpnevt();
+       Int_t GetJppevt();
+       Int_t GetJtnevt();
+       Int_t GetJtpevt();
+       Float_t GetXbjevt();
+       Float_t GetQsqevt();
+       Int_t GetNglevt();
+       Float_t GetZppevt();
+       Float_t GetZptevt();
+
+       void FillInternalFields(TEpos *epos);
 
 protected:
 
 private:
-       ClassDef(AliGenEposEventHeader,1)
+       Float_t fBimevt; //   bimevt ........ absolute value of impact parameter
+       Float_t fPhievt; //   phievt ........ angle of impact parameter
+       Int_t fKolevt;   //   kolevt ........ number of collisions
+       Int_t fKoievt;   //   koievt ........ number of inelastic collisions
+       Float_t fPmxevt; //   pmxevt ........ reference momentum
+       Float_t fEgyevt; //   egyevt ........ pp cm energy (hadron) or string energy (lepton)
+       Int_t fNpjevt;   //   npjevt ........ number of primary projectile participants
+       Int_t fNtgevt;   //   ntgevt ........ number of primary target participants
+       Int_t fNpnevt;   //   npnevt ........ number of primary projectile neutron spectators
+       Int_t fNppevt;   //   nppevt ........ number of primary projectile proton spectators
+       Int_t fNtnevt;   //   ntnevt ........ number of primary target neutron spectators
+       Int_t fNtpevt;   //   ntpevt ........ number of primary target proton spectators
+       Int_t fJpnevt;   //   jpnevt ........ number of absolute projectile neutron spectators
+       Int_t fJppevt;   //   jppevt ........ number of absolute projectile proton spectators
+       Int_t fJtnevt;   //   jtnevt ........ number of absolute target neutron spectators
+       Int_t fJtpevt;   //   jtpevt ........ number of absolute target proton spectators
+       Float_t fXbjevt; //   xbjevt ........ bjorken x for dis
+       Float_t fQsqevt; //   qsqevt ........ q**2 for dis
+       Int_t fNglevt;   //   nglevt ........ number of collisions acc to  Glauber
+       Float_t fZppevt; //   zppevt ........ average Z-parton-proj
+       Float_t fZptevt; //   zptevt ........ average Z-parton-targ
+
+
+
+       ClassDef(AliGenEposEventHeader,2)
 };
 
 
index 0d70a49..acab39e 100644 (file)
@@ -3,6 +3,7 @@
 set(SRCS
 epos167/epostimer.cxx
 TEpos.cxx AliGenEpos.cxx AliGenEposEventHeader.cxx
+AliGenEposIsajetToPdgConverter.cxx
 )
 
 set(FSRCS
@@ -35,6 +36,7 @@ Set(HDRS
 TEpos.h
 AliGenEpos.h
 AliGenEposEventHeader.h
+AliGenEposIsajetToPdgConverter.h
 )
 
 Set(SRCS ${SRCS} ${FSRCS})
index d651a20..96a61b0 100644 (file)
@@ -7,4 +7,5 @@
 #pragma link C++ class TEpos+;
 #pragma link C++ class AliGenEpos+;
 #pragma link C++ class AliGenEposEventHeader+;
+#pragma link C++ class AliGenEposIsajetToPdgConverter+;
 #endif
index f1bdaca..8f7c0bb 100644 (file)
 #include <TParticle.h>
 #include <TROOT.h>
 #include <TRandom.h>
+#include <TMath.h>
 #include <iostream>
 #include <fstream>
 #include <string>
 #include <vector>
 #include "eposproc.h"
 #include "EPOScommon.h"
+#include "AliGenEposIsajetToPdgConverter.h"
 #include "TEpos.h"
 
 using namespace std;
@@ -41,15 +43,44 @@ TEpos::TEpos()  : TGenerator("EPOS", "Epos event generator"),
                fBminim(0.0),
                fBmaxim(10000.0),
                fPhimin(0.0),
-               fPhimax(2*3.1415927),
+               fPhimax(TMath::TwoPi()),
                fEcms(-1),
                fSplitting(kFALSE),
                fNoDecays(),
-               fExtraInputLines()
+               fExtraInputLines(),
+               fIdConverter()
 {
+       fIdConverter=new AliGenEposIsajetToPdgConverter();
 }
 
-TEpos::~TEpos() {}
+TEpos::TEpos(const TEpos&)  : TGenerator("EPOS", "Epos event generator"),
+               fLaproj(0),
+               fMaproj(0),
+               fLatarg(0),
+               fMatarg(0),
+               fBminim(0.0),
+               fBmaxim(10000.0),
+               fPhimin(0.0),
+               fPhimax(TMath::TwoPi()),
+               fEcms(-1),
+               fSplitting(kFALSE),
+               fNoDecays(),
+               fExtraInputLines(),
+               fIdConverter()
+{
+       fIdConverter = new AliGenEposIsajetToPdgConverter();
+}
+
+TEpos::~TEpos() {
+       delete fIdConverter;
+}
+
+TEpos& TEpos::operator=(const TEpos&) {
+       if (!fIdConverter) {
+               fIdConverter = new AliGenEposIsajetToPdgConverter();
+       }
+       return *this;
+}
 
 void TEpos::Initialize() {
        Int_t nopeno = 0;
@@ -97,12 +128,8 @@ Int_t TEpos::ImportParticles(TClonesArray *particles, Option_t *) {
                        if (mother->GetFirstDaughter()==-1)
                                mother->SetFirstDaughter(iPart);
                }
-               TDatabasePDG *pdgDb = TDatabasePDG::Instance();
                Int_t status = cptl.istptl[iPart] + 1;
-               Int_t pdg = pdgDb->ConvertIsajetToPdg(cptl.idptl[iPart]);
-               if (pdg == 0) {
-                       printf("TEpos: Warning, unknown particle, index: %d, ISAJET: %d\n",iPart,cptl.idptl[iPart]);
-               }
+               Int_t pdg = fIdConverter->ConvertIsajetToPdg(cptl.idptl[iPart]);
                new((*particles)[iPart]) TParticle(pdg, status,
                                 tFather, -1, -1, -1,
                                 cptl.pptl[iPart][0], cptl.pptl[iPart][1],cptl.pptl[iPart][2],cptl.pptl[iPart][3],
@@ -127,12 +154,8 @@ TObjArray*  TEpos::ImportParticles(Option_t *) {
                        if (mother->GetFirstDaughter()==-1)
                                mother->SetFirstDaughter(iPart);
                }
-               TDatabasePDG *pdgDb = TDatabasePDG::Instance();
                Int_t status = cptl.istptl[iPart] + 1;
-               Int_t pdg = pdgDb->ConvertIsajetToPdg(cptl.idptl[iPart]);
-               if (pdg == 0) {
-                       printf("TEpos: Warning, unknown particle, index: %d, ISAJET: %d\n",iPart,cptl.idptl[iPart]);
-               }
+               Int_t pdg = fIdConverter->ConvertIsajetToPdg(cptl.idptl[iPart]);
                TParticle* p = new TParticle(pdg, status,
                                 tFather, -1, -1, -1,
                                 cptl.pptl[iPart][0], cptl.pptl[iPart][1],cptl.pptl[iPart][2],cptl.pptl[iPart][3],
@@ -168,7 +191,7 @@ void TEpos::GenerateInputFile() {
        file << "fname copy none" << endl;
        file << "fname log none" << endl;
        file << "fname check none" << endl;
-       file << "fname data /tmp/epos.out" << endl;
+//     file << "fname data /tmp/epos.out" << endl;
        file << "fname initl " << epo << "/epos.initl" << endl;
        file << "fname inidi " << epo << "/epos.inidi" << endl;
        file << "fname inidr " << epo << "/epos.inidr" << endl;
@@ -219,9 +242,9 @@ void TEpos::GenerateInputFile() {
                file << fExtraInputLines[i] << endl;
        }
 
-    file << "output epos" << endl;
-    file << "record event nevt nptl b endrecord" << endl;
-    file << "record particle i id fa mo c1 c2 st endrecord" << endl;
+//    file << "output epos" << endl;
+//    file << "record event nevt nptl b endrecord" << endl;
+//    file << "record particle i id fa mo c1 c2 st endrecord" << endl;
 
        file << "input " << epo << "/epos.param" << endl;
        file << "runprogram" << endl;
index 17a2a73..5fcc856 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <vector>
 class TObjArray;
+class AliGenEposIsajetToPdgConverter;
 
 class TEpos : public TGenerator {
 
@@ -31,6 +32,8 @@ class TEpos : public TGenerator {
 public:
 
    TEpos();
+   TEpos(const TEpos& rhs);
+   TEpos& operator=(const TEpos& rhs);
 
    virtual            ~TEpos();
 
@@ -117,6 +120,7 @@ protected:
 
 
 private:
+   AliGenEposIsajetToPdgConverter* fIdConverter;// PDG helper object
    ClassDef(TEpos,1)  //Interface to EPOS Event Generator
 };
 
index 238cea8..994ccd5 100644 (file)
@@ -2,13 +2,16 @@
 
 SRCS:= \
 epos167/epostimer.cxx          \
-TEpos.cxx AliGenEpos.cxx AliGenEposEventHeader.cxx
+TEpos.cxx AliGenEpos.cxx AliGenEposEventHeader.cxx  \
+AliGenEposIsajetToPdgConverter.cxx
 
 HDRS=TEpos.h AliGenEpos.h AliGenEposEventHeader.h   \
+AliGenEposIsajetToPdgConverter.h
 
 DHDR:=EPOSLinkDef.h
 
-EXPORT:=TEpos.h AliGenEpos.h AliGenEposEventHeader.h
+EXPORT:=TEpos.h AliGenEpos.h AliGenEposEventHeader.h  \
+AliGenEposIsajetToPdgConverter.h
 
 EINCLUDE:=EVGEN