updated parametrisation for pi0, eta, omega, phi for different energies, allow select...
[u/mrichter/AliRoot.git] / EVGEN / AliGenReaderCwn.cxx
index 48223be..0844449 100644 (file)
@@ -14,9 +14,7 @@
  **************************************************************************/
 
 
-/*
-$Log$
-*/
+/* $Id$ */
 
 // Read the old ALICE event format based on CW-ntuples
 // http://consult.cern.ch/alice/Internal_Notes/1995/32/abstract
@@ -25,19 +23,60 @@ $Log$
 // Author: andreas.morsch@cern.ch
 
 #include <TFile.h>
-#include <TTree.h>
 #include <TParticle.h>
+#include <TDatabasePDG.h>
+#include <TTree.h>
+#include <TVirtualMC.h>
 
 #include "AliGenReaderCwn.h"
-#include "AliMC.h"
-ClassImp(AliGenReaderCwn);
-
 
-AliGenReaderCwn::AliGenReaderCwn() 
+ClassImp(AliGenReaderCwn)
+
+AliGenReaderCwn::AliGenReaderCwn():
+    fNcurrent(0),
+    fNparticle(0),
+    fNparticleMax(0),
+    fTreeNtuple(0),
+    fNihead(0),
+    fNrhead(0),
+    fIdpart(0),
+    fTheta(0.),
+    fPhi(0.),
+    fP(0.),
+    fE(0.)
 {
 // Default constructor
-    fNcurrent   = 0;
-    fTreeNtuple = 0;
+    Int_t i;
+    for (i = 0; i <  6; i++) fRhead[i] = 0.;
+    for (i = 0; i < 12; i++) fIhead[i] = 0;
+}
+
+
+AliGenReaderCwn::AliGenReaderCwn(const AliGenReaderCwn &reader):
+    AliGenReader(reader),
+    fNcurrent(0),
+    fNparticle(0),
+    fNparticleMax(0),
+    fTreeNtuple(0),
+    fNihead(0),
+    fNrhead(0),
+    fIdpart(0),
+    fTheta(0.),
+    fPhi(0.),
+    fP(0.),
+    fE(0.)
+{
+    // Copy constructor
+    Int_t i;
+    for (i = 0; i <  6; i++) fRhead[i] = 0.;
+    for (i = 0; i < 12; i++) fIhead[i] = 0;
+    reader.Copy(*this);
+}
+
+
+AliGenReaderCwn::~AliGenReaderCwn()
+{
+    delete fTreeNtuple;
 }
 
 void AliGenReaderCwn::Init() 
@@ -78,7 +117,6 @@ Int_t AliGenReaderCwn::NextEvent()
 
     Int_t nentries = (Int_t) fTreeNtuple->GetEntries();
     if (fNcurrent < nentries) {
-       Int_t nb = (Int_t)fTreeNtuple->GetEvent(fNcurrent);
        fNcurrent++;
        
        Int_t i5=fIhead[4];
@@ -92,20 +130,19 @@ Int_t AliGenReaderCwn::NextEvent()
        }    
        fNparticleMax = nTracks;
        return nTracks;
-    } else {
-       return 0;
     }
+
     return 0;
 }
 
 TParticle* AliGenReaderCwn::NextParticle() 
 {
-//
+// Read next particle
 //  
     Float_t prwn;
     Float_t p[4];
 // Read the next particle
-    if (fCode == kGEANT3) fIdpart=gMC->PDGFromId(fIdpart);
+    if (fCode == kGEANT3) fIdpart=TVirtualMC::GetMC()->PDGFromId(fIdpart);
     Double_t amass = TDatabasePDG::Instance()->GetParticle(fIdpart)->Mass();
     if(fE<=amass) {
        Warning("Generate","Particle %d  E = %f mass = %f %f %f \n",
@@ -121,9 +158,7 @@ TParticle* AliGenReaderCwn::NextParticle()
     p[1] = prwn*TMath::Sin(fTheta)*TMath::Sin(fPhi);      
     p[2] = prwn*TMath::Cos(fTheta);
     p[3] = fE;
-    TParticle* particle = new TParticle(fIdpart, 0, -1, -1, -1, -1, p[0], p[1], p[2], p[3], 
-                                       0., 0., 0., 0.);
-    Int_t nb = (Int_t)fTreeNtuple->GetEvent(fNcurrent);
+    TParticle* particle = new TParticle(fIdpart, 0, -1, -1, -1, -1, p[0], p[1], p[2], p[3], 0., 0., 0., 0.);
     fNcurrent++;
     fNparticle++;
     return particle;
@@ -131,6 +166,21 @@ TParticle* AliGenReaderCwn::NextParticle()
 
 
 
+AliGenReaderCwn& AliGenReaderCwn::operator=(const  AliGenReaderCwn& rhs)
+{
+// Assignment operator
+    rhs.Copy(*this);
+    return *this;
+}
+
+void AliGenReaderCwn::Copy(TObject&) const
+{
+    //
+    // Copy 
+    //
+    Fatal("Copy","Not implemented!\n");
+}
+