/****************************************************** Converts the MCTracks to a TCA holding RhoCandidates *******************************************************/ #include "TClonesArray.h" #include "FairRootManager.h" #include "FairRunAna.h" #include "FairRuntimeDb.h" #include "FairRun.h" #include "FairRuntimeDb.h" #include "PndMcListConverter.h" #include #include #include "PndMCTrack.h" //Root stuff #include "TClonesArray.h" #include "TParticle.h" #include "TDatabasePDG.h" #include "TParticlePDG.h" //RHO stuff #include "RhoBase/RhoCandidate.h" using std::cout; using std::endl; // ----- Default constructor ------------------------------------------- PndMcListConverter::PndMcListConverter() : FairTask("Panda MCTracks to RhoCandidates Converter") { } // ------------------------------------------------------------------------- // ----- Destructor ---------------------------------------------------- PndMcListConverter::~PndMcListConverter() { if(fMcCandidates) { delete fMcCandidates; } } // ------------------------------------------------------------------------- // ----- Public method Init -------------------------------------------- InitStatus PndMcListConverter::Init() { //cout << " Inside the Init function****" << endl; //FairDetector::Initialize(); //FairRun* sim = FairRun::Instance(); //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); // Get RootManager FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) { cout << "-E- PndMcListConverter::Init: " << "RootManager not instantiated!" << endl; return kFATAL; } // Get input array fMcTracks = (TClonesArray*) ioman->GetObject("MCTrack"); if ( !fMcTracks ) { cout << "-W- PndMcListConverter::Init: " << "No MCTracks array!" << endl; return kERROR; } fMcCandidates =new TClonesArray("RhoCandidate"); ioman->Register("PndMcTracks","PndMcTracks", fMcCandidates, kTRUE); // Create and register output array cout << "-I- PndMcListConverter: Intialization successfull" << endl; fPdg = TDatabasePDG::Instance(); return kSUCCESS; } void PndMcListConverter::SetParContainers() { // Get run and runtime database FairRun* run = FairRun::Instance(); if ( ! run ) { Fatal("SetParContainers", "No analysis run"); } //FairRuntimeDb* db = run->GetRuntimeDb(); //if ( ! db ) Fatal("SetParContainers", "No runtime database"); } // ------------------------------------------------------------------------- // ----- Public method Exec -------------------------------------------- void PndMcListConverter::Exec(Option_t* opt) { if(fVerbose) { cout << "-I- Start PndMcListConverter. "<GetPdgCode()<2) { charge/=3.; } TClonesArray& ref = *fMcCandidates; Int_t size = ref.GetEntriesFast(); RhoCandidate* pmc=new (ref[size]) RhoCandidate(p4,charge); pmc->SetMcTruth(0);// Mc truth has no truth object.... pmc->SetPos(stvtx); pmc->SetType(part->GetPdgCode());//mass is overwirtten internally pmc->SetP4(p4);//reset to generator output } if(fVerbose) { cout <<"-I- PndMcListConverter: found primaries="<GetEntriesFast()<Delete(); } ClassImp(PndMcListConverter)