Standard cuts for (di-)muon analysis (Diego)
[u/mrichter/AliRoot.git] / TPHIC / AliGenTPHIC.cxx
index 932737d..9f3ea15 100644 (file)
@@ -56,6 +56,8 @@
 #include <TParticle.h>
 #include <TParticlePDG.h>
 #include <TDatabasePDG.h>
+#include <TClonesArray.h>
+
 #include "AliPythia.h"
 #include "AliRun.h"
 #include <AliGenTPHIC.h>
@@ -66,7 +68,15 @@ ClassImp(AliGenTPHIC)
 
 //------------------------------------------------------------
 
-AliGenTPHIC::AliGenTPHIC()
+AliGenTPHIC::AliGenTPHIC() :
+  AliGenMC(),
+  fTPHICgen(0x0),
+  fPythia(0x0),
+  fParticles(0x0),
+  fEvent(-1),
+  fDebug(0),
+  fDebugEventFirst(-1),
+  fDebugEventLast(-1)
 {
   // Constructor: create generator instance,
   // create particle array
@@ -91,14 +101,6 @@ AliGenTPHIC::AliGenTPHIC()
 }
 
 //____________________________________________________________
-AliGenTPHIC::AliGenTPHIC(const AliGenTPHIC & gen):
-    AliGenMC(gen)
-{
-  // copy constructor
-  gen.Copy(*this);
-}
-
-//____________________________________________________________
 AliGenTPHIC::~AliGenTPHIC()
 {
   // Destroys the object, deletes and disposes all TParticles currently on list.
@@ -128,8 +130,10 @@ void AliGenTPHIC::Generate()
   // The event differectial cross section is assigned as a weight
   // to each track of the event.
 
-  Float_t polar[3]= {0,0,0};
-  Float_t origin0[3],origin[3];
+  Float_t polar[3]   = {0,0,0};
+  Float_t origin0[3] = {0,0,0};
+  Float_t time0 = 0.;
+  Float_t origin[3]  = {0,0,0};
   Float_t p[3], tof;
   Double_t weight;
 
@@ -147,13 +151,18 @@ void AliGenTPHIC::Generate()
     Info("Generate()","one event is produced");
 
   Int_t j;
-  for (j=0;j<3;j++) origin[j]=fOrigin[j];
+  for (j=0;j<3;j++) origin0[j]=fOrigin[j];
+  time0 = fTimeOrigin;
   if(fVertexSmear==kPerEvent) {
     Rndm(random,6);
     for (j=0;j<3;j++) {
       origin0[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
        TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
     }
+    Rndm(random,2);
+    time0 += fOsigma[2]/TMath::Ccgs()*
+      TMath::Cos(2*random[0]*TMath::Pi())*
+      TMath::Sqrt(-2*TMath::Log(random[1]));
   }
 
   Int_t ip;
@@ -173,7 +182,7 @@ void AliGenTPHIC::Generate()
     origin[2] = origin0[2]+iparticle->Vz()/10.;
     kf = CheckPDGCode(iparticle->GetPdgCode());
     iparent = -1;
-    tof     = kconv*iparticle->T();
+    tof     = time0 + kconv*iparticle->T();
     if (ks == 1) trackIt = 1;
     else         trackIt = 0;
     PushTrack(fTrackIt*trackIt,iparent,kf,p,origin,polar,tof,kPPrimary,nt,weight,ks);
@@ -359,20 +368,20 @@ void AliGenTPHIC::SetProcess       (Int_t   proc  )
 {
   // Get 4-momentum of the first recoil nucleus after
   // the 2-photon process.
-  return TLorentzVector(fTPHICgen->GetPTAG1(1),
+  return TLorentzVector(fTPHICgen->GetPTAG1(0),
+                       fTPHICgen->GetPTAG1(1),
                        fTPHICgen->GetPTAG1(2),
-                       fTPHICgen->GetPTAG1(3),
-                       fTPHICgen->GetPTAG1(4));
+                       fTPHICgen->GetPTAG1(3));
 }
 //____________________________________________________________
   TLorentzVector AliGenTPHIC::MomentumRecNucl2()
 {
   // Get 4-momentum of the first recoil nucleus after
   // the 2-photon process.
-  return TLorentzVector(fTPHICgen->GetPTAG2(1),
+  return TLorentzVector(fTPHICgen->GetPTAG2(0),
+                       fTPHICgen->GetPTAG2(1),
                        fTPHICgen->GetPTAG2(2),
-                       fTPHICgen->GetPTAG2(3),
-                       fTPHICgen->GetPTAG2(4));
+                       fTPHICgen->GetPTAG2(3));
 }
 //____________________________________________________________
   Float_t AliGenTPHIC::GetXSectionCurrent()
@@ -395,12 +404,3 @@ void AliGenTPHIC::SetProcess       (Int_t   proc  )
   // calculated so far
   return fTPHICgen->GetXSTOTE();
 }
-
-void AliGenTPHIC::Copy(AliGenTPHIC&) const
-{
-    //
-    // Copy 
-    //
-    Fatal("Copy","Not implemented!\n");
-}
-