//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Reader for t2k data for the gemTPCdecoding program // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Maxence Vandenbroucke TUM (original author) // Felix Boehmer TUM // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "TpcDataReaderTaskAlice.h" // C/C++ Headers ---------------------- #include #include // Collaborating Class Headers -------- #include "FairRootManager.h" #include "TClonesArray.h" #include "TVector3.h" #include "TpcDigiMapper.h" #include "TpcDigiPar.h" #include "TH1.h" #include "TFile.h" #include "FairRunAna.h" #include "FairRuntimeDb.h" // Class Member definitions ----------- ClassImp(TpcDataReaderTaskAlice) TpcDataReaderTaskAlice::TpcDataReaderTaskAlice() : fPersistence(kFALSE), fLoop(0), fAliceEvent(NULL),fEv(NULL) { fSampleBranchName = "TpcSample"; fAliceEvBranchName = "AliceEvent"; fFile = "TBtest/run.root"; } TpcDataReaderTaskAlice::~TpcDataReaderTaskAlice() {;} InitStatus TpcDataReaderTaskAlice::Init() { //Get ROOT Manager FairRootManager* ioman= FairRootManager::Instance(); if(ioman==0) { Error("TpcDataReaderTaskAlice::Init","RootManager not instantiated!"); return kERROR; } // Get input data FairRun* run = FairRun::Instance(); if ( ! run ) Fatal("SetParContainers", "No analysis run"); FairRuntimeDb* db = run->GetRuntimeDb(); if ( ! db ) Fatal("SetParContainers", "No runtime database"); TpcDigiPar* fpar= (TpcDigiPar*) db->getContainer("TpcDigiPar"); if (! fpar ) Fatal("SetParContainers", "TpcDigiPar not found"); //fPadplane= fPar->getPadPlane(); fIntree = new TChain("TpcTree"); fIntree->Add(fFile.Data());//before AddFile fIntree->SetBranchAddress("tpcEvent", &fEv); fIntree->SetBranchAddress("GEMEvent", &fAliceEvent); TFile* hfile = new TFile(fFile.Data()); if(fIntree->IsZombie()) { std::cout << "TpcDataReaderTaskAlice::Init data file/tree "<< fFile << " couldn't be loaded -> abort" <GetEntries()<< std::endl; // create and register output array fSampleOutArray = new TClonesArray("TpcSample"); fAliceEventOutArray = new TClonesArray("GEMEvent"); ioman->Register("TpcSample","Tpc",fSampleOutArray,fPersistence); ioman->Register("GEMEvent","Tpc", fAliceEventOutArray, fPersistence); return kSUCCESS; } //EXEC void TpcDataReaderTaskAlice::Exec(Option_t* opt) { if (fVerbose) std::cout << "TpcDataReaderTaskAlice::Exec" << std::endl; // Reset output Arrays if(fSampleOutArray==0) Fatal("TpcDataReaderTaskAlice::Exec()","No SampleOutArray"); fSampleOutArray->Delete(); fAliceEventOutArray->Delete(); const std::vector* samples; while(fLoopGetEntries()) { //get the TpcEvent; fIntree->GetEvent(fLoop); fLoop++; samples = fEv->getEventVector(); if (fVerbose) std :: cout << "Copying "<< samples->size()<<" samples." <size()<<" samples" <size(); i++){ TpcSample* s=new ((*fSampleOutArray)[i]) TpcSample((*samples)[i]); s->setIndex(i); } return; } return; } void TpcDataReaderTaskAlice::SetParContainers() { std::cout<<"TpcDataReaderTaskAlice::SetParContainers"<GetRuntimeDb(); if ( ! db ) Fatal("SetParContainers", "No runtime database"); // Get Tpc digitisation parameter container fPar= (TpcDigiPar*) db->getContainer("TpcDigiPar"); if (! fPar ) Fatal("SetParContainers", "TpcDigiPar not found"); }