]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TTherminator/TTherminator.cxx
saveViews macro fixed. Some macros are now being compiled before using to fix issues...
[u/mrichter/AliRoot.git] / TTherminator / TTherminator.cxx
index 6574c2c35d795f5d0572486bd1958c023afe6d71..d034ddfa4fe1326f4c8bef82987f3b4368d78985 100644 (file)
@@ -35,6 +35,7 @@
 #include <TDatabasePDG.h>
 #include <TParticle.h>
 #include <TClonesArray.h>
+#include <TClass.h>
 
 ReadPar *sRPInstance;
 STR      sRPFileName;
@@ -55,14 +56,32 @@ TTherminator::TTherminator():
   fPartDB = new ParticleDB();
 }
 TTherminator::TTherminator(const TTherminator & therm) :
-  TGenerator(therm),
+  TGenerator(therm), 
   fCalka(0),
   fEvent(0),
   fPartDB(0)
 {
   // Copy constructor
+  //  fPartDB = new ParticleDB();
+  if (fCalka) delete fCalka;
+  fCalka = new Integrator(*therm.fCalka);
+  if (fEvent) delete fEvent;
+  fEvent = new Event(*therm.fEvent);
+  if (fPartDB) delete fPartDB;
   fPartDB = new ParticleDB();
 }
+TTherminator& TTherminator::operator=(const TTherminator & therm)
+{
+  if (this != &therm) {
+    fCalka = therm.fCalka;
+    fEvent = therm.fEvent;
+    delete fPartDB;
+    fPartDB = new ParticleDB();
+  }
+
+  return *this;
+}
+
 TTherminator::~TTherminator()
 {
   // Destructor
@@ -203,6 +222,8 @@ void        TTherminator::Initialize(){
        }
       in.close();
     }
+
+  delete tParser;
 }
 
 void        TTherminator::GenerateEvent()
@@ -225,13 +246,15 @@ void        TTherminator::GenerateEvent()
 Int_t       TTherminator::ImportParticles(TClonesArray *particles, Option_t */*option*/)
 {
   // Import particles from a generated event into an external array
+  const double kFmToGev = 0.197327;
+
   if (particles == 0) return 0;
   TClonesArray &particlesR = *particles;
   particlesR.Clear();
   Int_t nump = 0;
   if (!fEvent) return 0;
   Int_t numpart = fEvent->GetParticleCount();
-  printf("\n TTherminator: Therminator stack contains %d particles.", numpart);
+  printf("\n TTherminator: Therminator stack contains %d particles.\n", numpart);
   for (Int_t iPart=0; iPart<numpart; iPart++) {
     Particle *tPart = fEvent->GetParticleOfCount(iPart);
     Int_t tFather;
@@ -246,10 +269,9 @@ Int_t       TTherminator::ImportParticles(TClonesArray *particles, Option_t */*o
     nump++;
     //    printf("Putting %d %d %lf %d\n", tPart->GetParticleType()->GetPDGCode(), iPart, tPart->px, tPart);
     new (particlesR[iPart]) TParticle(tPart->GetParticleType()->GetPDGCode(), tPart->HadDecayed(),
-                                     tFather, -1, -1, -1,
-                                     tPart->px, tPart->py, tPart->pz, tPart->GetEnergy() ,
-                                     tPart->rx*1.e-13, tPart->ry*1.e-13, tPart->rz*1.e-13, tPart->rt*1.e-13/300000000 
-                                     );
+                                     tFather, -1, -1, -1,
+                                     tPart->px, tPart->py, tPart->pz, tPart->GetEnergy() ,
+                                     tPart->rx*1.e-13*kFmToGev, tPart->ry*1.e-13*kFmToGev, tPart->rz*1.e-13*kFmToGev, tPart->rt*1.e-13*kFmToGev/3e10);
     particlesR[iPart]->SetUniqueID(iPart);
   }
   
@@ -259,6 +281,8 @@ Int_t       TTherminator::ImportParticles(TClonesArray *particles, Option_t */*o
 TObjArray*  TTherminator::ImportParticles(Option_t */*option*/)
 {
   // Import generated particles into an internal array
+  const double kFmToGev = 0.197327;
+
   Int_t nump = 0;
   fParticles->Clear();
   if (!fEvent) return 0;
@@ -279,8 +303,7 @@ TObjArray*  TTherminator::ImportParticles(Option_t */*option*/)
     TParticle* p = new TParticle(tPart->GetParticleType()->GetPDGCode(), tPart->HadDecayed(),
                                 tFather, -1, -1, -1,
                                 tPart->px, tPart->py, tPart->pz, tPart->GetEnergy() ,
-                                tPart->rx*1.e-13, tPart->ry*1.e-13, tPart->rz*1.e-13, tPart->rt*1.e-13/300000000 
-                                );
+                                tPart->rx*1.e-13*kFmToGev, tPart->ry*1.e-13*kFmToGev, tPart->rz*1.e-13*kFmToGev, tPart->rt*1.e-13*kFmToGev/3e10);
     p->SetUniqueID(iPart);
     fParticles->Add(p);
   }