fGinit(1),
fGfinal(1),
fHadronisation(1),
+ fPatchOmegaDalitz(0),
fNpartons(0),
fReadFromFile(0),
fQuench(0),
fGinit(kTRUE),
fGfinal(kTRUE),
fHadronisation(kTRUE),
+ fPatchOmegaDalitz(0),
fNpartons(0),
fReadFromFile(kFALSE),
fQuench(kFALSE),
//
// .. and perform hadronisation
// printf("Calling hadronisation %d\n", fPythia->GetN());
- fPythia->Pyexec();
+
+ if (fPatchOmegaDalitz) {
+ fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
+ fPythia->Pyexec();
+ fPythia->DalitzDecays();
+ fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
+ }
+ fPythia->Pyexec();
}
fTrials++;
fPythia->ImportParticles(&fParticles,"All");
+
if (TMath::Abs(fDyBoost) > 1.e-4) Boost();
//
//
void SetLength(Float_t length) {fLength = length;}
virtual void SetHadronisation(Int_t flag = 1) {fHadronisation = flag;}
+ virtual void SetPatchOmegaDalitz(Int_t flag = 1) {fPatchOmegaDalitz = flag;}
virtual void SetReadFromFile(const Text_t *filname) {fFileName = filname; fReadFromFile = 1;}
//
Int_t fGinit; //initial state gluon radiation
Int_t fGfinal; //final state gluon radiation
Int_t fHadronisation; //hadronisation
+ Bool_t fPatchOmegaDalitz; //flag for omega dalitz decay patch
Int_t fNpartons; //Number of partons before hadronisation
Int_t fReadFromFile; //read partons from file
Int_t fQuench; //Flag for quenching
Float_t fEMCALMinPhi; // Minimum phi EMCAL
Float_t fEMCALMaxPhi; // Maximum phi EMCAL
Float_t fEMCALEta; // Maximum eta EMCAL
-
private:
AliGenPythia(const AliGenPythia &Pythia);
AliGenPythia & operator=(const AliGenPythia & rhs);
- ClassDef(AliGenPythia,9) // AliGenerator interface to Pythia
+ ClassDef(AliGenPythia, 9) // AliGenerator interface to Pythia
};
#endif
-
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
#include "AliPythiaRndm.h"
#include "AliFastGlauber.h"
#include "AliQuenchingWeights.h"
+#include "AliOmegaDalitz.h"
#include "TVector3.h"
+#include "TLorentzVector.h"
#include "PyquenCommon.h"
ClassImp(AliPythia)
fZmax(0.97),
fGlauber(0),
fQuenchingWeights(0),
- fItune(-1)
+ fItune(-1),
+ fOmegaDalitz()
{
// Default Constructor
//
fZmax(0.97),
fGlauber(0),
fQuenchingWeights(0),
- fItune(-1)
+ fItune(-1),
+ fOmegaDalitz()
{
// Copy Constructor
pythia.Copy(*this);
SetMDCY(Pycomp(310) ,1,0); // K0S
SetMDCY(Pycomp(3122),1,0); // kLambda
SetMDCY(Pycomp(3112),1,0); // sigma -
- SetMDCY(Pycomp(3212),1,0); // sigma 0
SetMDCY(Pycomp(3222),1,0); // sigma +
SetMDCY(Pycomp(3312),1,0); // xi -
SetMDCY(Pycomp(3322),1,0); // xi 0
//
SetMSTP(41,1); // all resonance decays switched on
Initialize("CMS","p","p",fEcms);
-
+ fOmegaDalitz.Init();
}
Int_t AliPythia::CheckedLuComp(Int_t kf)
Fatal("Copy","Not implemented!\n");
}
+void AliPythia::DalitzDecays()
+{
+
+ //
+ // Replace all omega dalitz decays with the correct matrix element decays
+ //
+ Int_t nt = fPyjets->N;
+ for (Int_t i = 0; i < nt; i++) {
+ if (fPyjets->K[1][i] != 223) continue;
+ Int_t fd = fPyjets->K[3][i] - 1;
+ Int_t ld = fPyjets->K[4][i] - 1;
+ if (fd < 0) continue;
+ if ((ld - fd) != 2) continue;
+ if ((fPyjets->K[1][fd] != 111) ||
+ (TMath::Abs(fPyjets->K[1][fd+1]) != 11)) continue;
+ TLorentzVector omega(fPyjets->P[0][i], fPyjets->P[1][i], fPyjets->P[2][i], fPyjets->P[3][i]);
+ fOmegaDalitz.Decay(223, &omega);
+ for (Int_t j = 0; j < 3; j++) {
+ for (Int_t k = 0; k < 4; k++) {
+ TLorentzVector vec = (fOmegaDalitz.Products())[2-j];
+ fPyjets->P[k][fd+j] = vec[k];
+ }
+ }
+ }
+}
#include <AliRndm.h>
#include <AliStructFuncType.h>
#include "PythiaProcesses.h"
-
+#include "AliOmegaDalitz.h"
class AliFastGlauber;
class AliQuenchingWeights;
// return instance of the singleton
static AliPythia* Instance();
virtual void Quench();
+ void DalitzDecays();
// Assignment Operator
AliPythia & operator=(const AliPythia & rhs);
void Copy(TObject&) const;
AliFastGlauber* fGlauber; // ! The Glauber model
AliQuenchingWeights* fQuenchingWeights; // ! The Quenching Weights model
Int_t fItune; // ! Pythia tune
+ AliOmegaDalitz fOmegaDalitz; // ! omega dalitz decayer
static AliPythia* fgAliPythia; // Pointer to single instance
private:
AliPythia();