//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcAdcTask // see TpcAdcTask.hh for details // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "TpcAdcTask.h" // C/C++ Headers ---------------------- #include // Collaborating Class Headers -------- #include "CbmRootManager.h" #include "TClonesArray.h" #include "TRandom.h" #include "TpcSignal.h" #include "TpcSignalAge.h" #include "TpcSample.h" #include "TpcFrontend.h" #include "TpcCRRCPulseshape.h" #include "TpcDigitizationPolicy.h" // Class Member definitions ----------- TpcAdcTask::TpcAdcTask() : CbmTask("TPC Adc"), _persistence(kFALSE) { _signalBranchName = "TpcSignal"; } TpcAdcTask::~TpcAdcTask() { if(_frontend!=0)delete _frontend; if(_pulseshape!=0)delete _pulseshape; } InitStatus TpcAdcTask::Init() { //Get ROOT Manager CbmRootManager* ioman= CbmRootManager::Instance(); if(ioman==0) { Error("TpcAdcTask::Init","RootManager not instantiated!"); return kERROR; } // Get input collection _signalArray=(TClonesArray*) ioman->GetObject(_signalBranchName); if(_signalArray==0) { Error("TpcAdcTask::Init","Signal-array not found!"); return kERROR; } // create and register output array _sampleArray = new TClonesArray("TpcSample"); ioman->Register("TpcSample","Tpc",_sampleArray,_persistence); //TODO: Get this from Database! _frontend= new TpcFrontend(100, // AdcThreshold 100000, // adcmax 10, // adcbits 40, // SamplingFreq_Mhz -60000, // t0 30, // timebits 00); // PSAthreshold _pulseshape= new TpcCRRCPulseshape(50,50,0.01); // tdiff,tint,tsig return kSUCCESS; } void TpcAdcTask::Exec(Option_t* opt) { // Reset output Array if(_sampleArray==0) Fatal("TpcAdc::Exec)","No SampleArray"); _sampleArray->Delete(); std::vector sv; std::vector samplev; Int_t ns=_signalArray->GetEntriesFast(); if(ns>0){ for(Int_t is=0;isAt(is); sv.push_back(sig); //_signalArray->RemoveAt(is); //delete sig; } // end loop over signals //_signalArray->Clear(); //sort in time std::cout<<"begin sorting signals in time"<GetEntriesFast()<<" Samples created"<