// ------------------------------------------------------------------------- // ----- CbmMvdDetector source file ----- // ----- Created 31/01/11 by M. Deveaux ----- // ------------------------------------------------------------------------- #include "CbmMvdDetector.h" #include using std::cout; using std::endl; //_____________________________________________________________________________ CbmMvdDetector* CbmMvdDetector::fInstance= 0; //_____________________________________________________________________________ CbmMvdDetector* CbmMvdDetector::Instance() { return fInstance; } // ----- Default constructor ------------------------------------------- CbmMvdDetector::CbmMvdDetector() { Fatal (GetName(), " - Do not use standard constructor"); } // ------------------------------------------------------------------------- // ----- Standard constructor ------------------------------------------ CbmMvdDetector::CbmMvdDetector(const char* name) { if(fInstance) {Fatal(GetName(), " - Error, singleton does already exist.");} else {fInstance=this;}; fSensorArray=new TClonesArray("CbmMvdSensor", 10); fPluginArray=new TObjArray(2); fSensorArrayFilled=kFALSE; } // ------------------------------------------------------------------------- // ----- Destructor ---------------------------------------------------- CbmMvdDetector::~CbmMvdDetector() { } // -------Setters ----------------------------------------------------- void CbmMvdDetector::AddSensor(TString clearName, TString fullName, TString nodeName, CbmMvdSensorDataSheet* sensorData) { if (fSensorArrayFilled) {Fatal (GetName(), " - Error, must add all sensors before adding plugins.");} Int_t nSensors=fSensorArray->GetEntriesFast(); new ((*fSensorArray)[nSensors]) CbmMvdSensor(clearName, sensorData, fullName, nodeName,-1,-1,0); //CbmMvdSensor(const char* name, CbmMvdSensorDataSheet* dataSheet, TString volName, //TString nodeName, Int_t stationNr, Int_t volumeId, Double_t sensorStartTime); CbmMvdSensor* sensor = (CbmMvdSensor*)fSensorArray->At(nSensors); sensor->SetDataSheet(sensorData); } // ---------------------------------------------------------------------- void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin) { CbmMvdSensorPlugin* copy; CbmMvdSensor* sensor; Int_t nSensors=fSensorArray->GetEntriesFast(); for (Int_t i=0;iClone(); //data parallelizm requires that each sensor get its own plugin object sensor=(CbmMvdSensor*)fSensorArray->At(i); sensor->AddPlugin(copy); }; }; //---------------------------------------------------------------------- void CbmMvdDetector::Init(){ Int_t nSensors=fSensorArray->GetEntriesFast(); CbmMvdSensor* sensor; for(Int_t i=0; iAt(i); sensor->Init(); }; } //----------------------------------------------------------------------- void CbmMvdDetector::ExecChain(){ Int_t nSensors=fSensorArray->GetEntriesFast(); CbmMvdSensor* sensor; for(Int_t i=0; iAt(i); sensor->ExecChain(); }; } //----------------------------------------------------------------------- void CbmMvdDetector::Exec(UInt_t nLevel){ Int_t nSensors=fSensorArray->GetEntriesFast(); CbmMvdSensor* sensor; for(Int_t i=0; iAt(i); sensor->Exec(nLevel); }; } //----------------------------------------------------------------------- ClassImp(CbmMvdDetector)