Skip to content
Snippets Groups Projects
Commit 4fcbb6cc authored by Daniel Wielanek's avatar Daniel Wielanek
Browse files

Merge branch 'dev' into 'dev'

Freezout storage

There is known problem with storing "extra" branches by generator class. Standard registering via FairRootManager doesn't work corretly with Geant4. I created task that add itself for reconstruction chain. So we can now store freezout information by using this class. Storing of this information for vHLLE model is also implemented.

See merge request !5
parents a959ae8a 49277aeb
No related branches found
No related tags found
No related merge requests found
......@@ -59,6 +59,7 @@ MpdGetNumEvents.cxx
MpdHistoGenerator.cxx
Mpd3fdGenerator.cxx
MpdVHLLEGenerator.cxx
MpdFreezoutGenerator.cxx
)
Set(HEADERS )
......
......@@ -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*>;
......
/*
* 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;
}
/*
* 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_ */
......@@ -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;
......
......@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment