diff --git a/generators/CMakeLists.txt b/generators/CMakeLists.txt index 55ede5695c87b9af97ea487cc94042d017206c18..e302b23d6db3b4e93df941c8c4676eeee7c5b249 100644 --- a/generators/CMakeLists.txt +++ b/generators/CMakeLists.txt @@ -59,6 +59,7 @@ MpdGetNumEvents.cxx MpdHistoGenerator.cxx Mpd3fdGenerator.cxx MpdVHLLEGenerator.cxx +MpdFreezoutGenerator.cxx ) Set(HEADERS ) diff --git a/generators/GenLinkDef.h b/generators/GenLinkDef.h index 98aba8ccc1655f7d9641fd7aebb5c31f3fde2bd5..71bf59c00fc963137cee80bf37001b7a22a14a52 100644 --- a/generators/GenLinkDef.h +++ b/generators/GenLinkDef.h @@ -34,6 +34,7 @@ #pragma link C++ class MpdLibZ+; #pragma link C++ class MpdGetNumEvents+; #pragma link C++ class MpdHistoGenerator+; +#pragma link C++ class MpdFreezoutGenerator+; #pragma link C++ class map<TString, FairIon*>; diff --git a/generators/MpdFreezoutGenerator.cxx b/generators/MpdFreezoutGenerator.cxx new file mode 100644 index 0000000000000000000000000000000000000000..26f7387bbdc20b72eb596bbbf7c7d2cef441c117 --- /dev/null +++ b/generators/MpdFreezoutGenerator.cxx @@ -0,0 +1,39 @@ +/* + * MpdFreezoutGenerator.cxx + * + * Created on: 30 gru 2016 + * Author: Daniel Wielanek + * E-mail: daniel.wielanek@gmail.com + * Warsaw University of Technology, Faculty of Physics + */ +#include "MpdFreezoutGenerator.h" +#include "FairRunSim.h" +MpdFreezoutGenerator *MpdFreezoutGenerator::fgInstance = NULL; +MpdFreezoutGenerator::MpdFreezoutGenerator() { + if(fgInstance){ + return; + }else{ + FairRunSim *sim = FairRunSim::Instance(); + fFreez = new TClonesArray("TLorentzVector",1000); + fgInstance = this; + sim->AddTask(this); + } +} + +MpdFreezoutGenerator* MpdFreezoutGenerator::Instance() { + if(fgInstance==NULL){ + fgInstance = new MpdFreezoutGenerator(); + } + return fgInstance; +} + +InitStatus MpdFreezoutGenerator::Init() { + FairRootManager *mngr = FairRootManager::Instance(); + mngr->Register("Freezouts.","Freezouts",fFreez,kTRUE); + return kSUCCESS; +} + +MpdFreezoutGenerator::~MpdFreezoutGenerator() { + delete fFreez; +} + diff --git a/generators/MpdFreezoutGenerator.h b/generators/MpdFreezoutGenerator.h new file mode 100644 index 0000000000000000000000000000000000000000..d95f0978cd1bf0d951e4b0f68663d268ea9ce94a --- /dev/null +++ b/generators/MpdFreezoutGenerator.h @@ -0,0 +1,34 @@ +/* + * MpdFreezoutGenerator.h + * + * Created on: 30 gru 2016 + * Author: Daniel Wielanek + * E-mail: daniel.wielanek@gmail.com + * Warsaw University of Technology, Faculty of Physics + */ +#ifndef SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_ +#define SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_ +#include "FairTask.h" +#include <TClonesArray.h> +#include <TLorentzVector.h> + +/** + * class for registering freezout coordinates in MpdROOT, for unknown reason standard registering doesn't work with Geant4 + */ +class MpdFreezoutGenerator : public FairTask{ + static MpdFreezoutGenerator *fgInstance; + TClonesArray *fFreez; +public: + MpdFreezoutGenerator(); + static MpdFreezoutGenerator *Instance(); + InitStatus Init(); + /** + * + * @return pointer to array + */ + TClonesArray *GetArray()const{ return fFreez;}; + virtual ~MpdFreezoutGenerator(); + ClassDef(MpdFreezoutGenerator,1) +}; + +#endif /* SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_ */ diff --git a/generators/MpdVHLLEGenerator.cxx b/generators/MpdVHLLEGenerator.cxx index 3913f5aae29d936adeb0f2ada3f9aa45b347d10b..f837f58decd3c5b294b14a2808103637fcb8043e 100644 --- a/generators/MpdVHLLEGenerator.cxx +++ b/generators/MpdVHLLEGenerator.cxx @@ -3,13 +3,15 @@ MpdVHLLEGenerator::MpdVHLLEGenerator() : FairGenerator(), fInputFile(NULL), -fFileName("") { +fFileName("") , +fFreezout(NULL){ } MpdVHLLEGenerator::MpdVHLLEGenerator(TString fileName, Bool_t isCascade) : FairGenerator(), fInputFile(NULL), -fFileName(fileName) { +fFileName(fileName), +fFreezout(NULL){ // fFileName = fileName; cout << "-I MpdVHLLEGenerator: Opening input file " << fFileName << endl; fInputFile = new TFile(fFileName.Data()); @@ -31,10 +33,13 @@ fFileName(fileName) { fDstTree->SetBranchAddress("y", fY); fDstTree->SetBranchAddress("z", fZ); fDstTree->SetBranchAddress("E", fE); + fDstTree->SetBranchAddress("t", fT); fDstTree->SetBranchAddress("npart", &fNpart); fDstTree->SetBranchAddress("id", fPID); fEventNumber = 0; + MpdFreezoutGenerator *freezgen = MpdFreezoutGenerator::Instance(); + fFreezout = freezgen->GetArray(); } MpdVHLLEGenerator::~MpdVHLLEGenerator() { @@ -66,9 +71,11 @@ Bool_t MpdVHLLEGenerator::ReadEvent(FairPrimaryGenerator* primGen) { // event->SetB(b); event->MarkSet(kTRUE); } - + fFreezout->Clear(); for (Int_t iTrack = 0; iTrack < fNpart; iTrack++) { primGen->AddTrack(fPID[iTrack], fPx[iTrack], fPy[iTrack], fPz[iTrack], fX[iTrack], fY[iTrack], fZ[iTrack]); + TLorentzVector *freezpos = (TLorentzVector*)fFreezout->ConstructedAt(iTrack); + freezpos->SetXYZT(fX[iTrack],fY[iTrack],fZ[iTrack],fT[iTrack]); // cout << iTrack << " " << fPID[iTrack] << " " << // fPx[iTrack] << " " << fPy[iTrack] << " " << fPz[iTrack] << " " << // fX[iTrack] << " " << fY[iTrack] << " " << fZ[iTrack] << endl; diff --git a/generators/MpdVHLLEGenerator.h b/generators/MpdVHLLEGenerator.h index 59eba3fb07ba0df262e8d6509901039d42d2225b..6a271926937808fec5c5eddac590e735dd7410dc 100644 --- a/generators/MpdVHLLEGenerator.h +++ b/generators/MpdVHLLEGenerator.h @@ -14,6 +14,7 @@ #include "FairPrimaryGenerator.h" #include "TFile.h" #include "TChain.h" +#include "MpdFreezoutGenerator.h" using namespace std; using namespace TMath; @@ -48,9 +49,11 @@ private: Float_t fY[dim]; //! Float_t fZ[dim]; //! Float_t fE[dim]; //! + Float_t fT[dim]; //! Int_t fPID[dim]; //! Int_t fNpart; //! Int_t fEventNumber; //! + TClonesArray *fFreezout; //! TString fBranch; //! treefin corresponds to hydro + cascade, treeini -- to hydro calculations only void SetCascade(Bool_t flag) {