Possibility to patch the omega dalitz decay in AliDecayerPythia
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Feb 2012 13:19:48 +0000 (13:19 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Feb 2012 13:19:48 +0000 (13:19 +0000)
EVGEN/AliOmegaDalitz.cxx
EVGEN/AliOmegaDalitz.h
PYTHIA6/AliDecayerPythia.cxx
PYTHIA6/AliDecayerPythia.h

index 0df10a1..dcf7944 100644 (file)
@@ -49,7 +49,8 @@ ClassImp(AliOmegaDalitz)
 AliOmegaDalitz::AliOmegaDalitz():
        AliDecayer(),
         fEPMass(0),
-       fMPMass(0)
+       fMPMass(0),
+       fInit(0)
 {
     // Constructor
 }
@@ -130,6 +131,11 @@ void AliOmegaDalitz::Decay(Int_t idlepton, TLorentzVector* pparent)
 //
 //-----------------------------------------------------------------------------
 
+    if (!fInit) {
+       Init();
+       fInit=1;
+    }
+    
   Double_t pmass, lmass, omass, lpmass;
   Double_t e1, p1, e3, p3;
   Double_t betaSquare, lambda;
@@ -315,7 +321,8 @@ void AliOmegaDalitz::Copy(TObject&) const
 AliOmegaDalitz::AliOmegaDalitz(const AliOmegaDalitz &dalitz)
   : AliDecayer(),
     fEPMass(0),
-    fMPMass(0)
+    fMPMass(0),
+    fInit(0)
 {
   // Copy constructor
   dalitz.Copy(*this);
index 0a9424e..b59b0ac 100644 (file)
@@ -45,7 +45,8 @@ class AliOmegaDalitz : public AliDecayer
     TH1F*           fEPMass;       // Histogram for electron pair mass
     TH1F*           fMPMass;       // Histogram for muon pair mass
     TLorentzVector  fProducts[3];  // Decay products
-
+    Bool_t          fInit;         // Initialized
+    
  private:
     virtual void    Rot(Double_t pin[3], Double_t pout[3],
                        Double_t costheta, Double_t sintheta,
index 7753a08..0e7e5c9 100644 (file)
@@ -59,7 +59,8 @@ AliDecayerPythia::AliDecayerPythia():
     fPythia(AliPythia::Instance()),
     fDecay(kAll),
     fHeavyFlavour(kTRUE),
-    fLongLived(kFALSE)
+    fLongLived(kFALSE),
+    fPatchOmegaDalitz(0)
 {
 // Default Constructor
     for (Int_t i=0; i< 501; i++) fBraPart[i]= 1.;
@@ -71,7 +72,8 @@ AliDecayerPythia::AliDecayerPythia(const AliDecayerPythia &decayer):
     fPythia(0),
     fDecay(kAll),
     fHeavyFlavour(kTRUE),
-    fLongLived(kFALSE)
+    fLongLived(kFALSE),
+    fPatchOmegaDalitz(0)
 {
     // Copy Constructor
     decayer.Copy(*this);
@@ -140,8 +142,15 @@ void AliDecayerPythia::Decay(Int_t idpart, TLorentzVector* p)
     Float_t energy = p->Energy();
     Float_t theta  = p->Theta();
     Float_t phi    = p->Phi();
-    
-    Lu1Ent(0, idpart, energy, theta, phi);
+    if (!fPatchOmegaDalitz) {
+       Lu1Ent(0, idpart, energy, theta, phi);
+    } else {
+       fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
+       Lu1Ent(0, idpart, energy, theta, phi);
+       fPythia->DalitzDecays();
+       fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
+       fPythia->Pyexec();
+    }
     fPythia->GetPrimaries();
 }
 
index fa6ff56..d26cf1d 100644 (file)
@@ -28,6 +28,7 @@ public AliDecayer
     virtual void    SetForceDecay(Int_t decay)
       {SetForceDecay((Decay_t) decay);}
     virtual void    ForceDecay();
+    virtual void    SetPatchOmegaDalitz() {fPatchOmegaDalitz = 1;}
     virtual void    HeavyFlavourOff() {fHeavyFlavour = kFALSE;}
     virtual void    DecayLongLivedParticles()  {fLongLived    = kTRUE;}
     virtual Float_t GetPartialBranchingRatio(Int_t ipart);
@@ -60,6 +61,7 @@ public AliDecayer
     Float_t     fBraPart[501];    //! Branching ratios
     Bool_t      fHeavyFlavour;    //! Flag for heavy flavors
     Bool_t      fLongLived;       //! Flag for long lived particle decay
+    Bool_t      fPatchOmegaDalitz;//! Flag to patch the omega Dalitz decays 
     static Bool_t fgInit;         //! initialization flag 
     
     ClassDef(AliDecayerPythia, 3) // AliDecayer implementation using Pythia