// ------------------------------------------------------------------------- // ----- CbmMvdDetector header file ----- // ----- Created 02/12/08 by M. Deveaux ----- // ------------------------------------------------------------------------- /** CbmMvdDetector.h *@author M.Deveaux <deveaux@physik.uni-frankfurt.de> ** ** Singleton holding information on all sensors of the MVD. ** User interface to the MVD-Software ** **/ #ifndef CBMMVDDETECTOR_H #define CBMMVDDETECTOR_H 1 /// includes from c //#include <vector> /// includes from ROOT #include "TClonesArray.h" #include "TNamed.h" /// includes from CbmRoot #include "CbmMvdStationPar.h" //#include "CbmMvdDigi.h" #include "tools/CbmMvdHelper.h" class CbmMvdPoint; class CbmMvdSensorDataSheet; class CbmMvdSensorPlugin; class CbmMvdSensor; class CbmDigiManager; class CbmMvdDetector : public TNamed { private: CbmMvdDetector(); CbmMvdDetector(const char* name); public: /** * static instance */ static CbmMvdDetector* Instance(); /** Destructor **/ virtual ~CbmMvdDetector(); /** Data interface */ void SendInput(TClonesArray* input); void SendInputDigis(CbmDigiManager* digiMan); void SendInputDigis(TClonesArray* digis); void SendInputDigisToHits(TClonesArray* digis); void SendInputCluster(TClonesArray* cluster); // void SendClonesArray(TClonesArray* addedStructures, Int_t dataLevel=0){;} TClonesArray* GetOuput() { return 0; } TClonesArray* GetOutputHits(); TClonesArray* GetOutputDigis(); TClonesArray* GetOutputDigiMatchs(); TClonesArray* GetOutputCluster(); //khun TClonesArray* GetOutputArray(Int_t nPlugin); // TClonesArray* GetClonesArray(Int_t dataLevel){ return 0;} Int_t GetSensorArraySize() { return (fSensorArray->GetEntriesFast()); } UInt_t GetPluginArraySize() { return fPluginCount - 1; } TClonesArray* GetCurrentEvent(); /** Initialisation */ void AddSensor(TString clearName, TString fullName, TString nodeName, CbmMvdSensorDataSheet* sensorData, Int_t sensorNr, Int_t volumeId, Double_t sensorStartTime, Int_t stationNr); void AddPlugin(CbmMvdSensorPlugin* plugin); void BuildDebugHistograms() { ; }; void Init(); void SetMisalignment(Float_t misalignment[3]) { for (Int_t i = 0; i < 3; i++) fepsilon[i] = misalignment[i]; }; void SetParameterFile(CbmMvdStationPar* parameter) { fParameter = parameter; }; void ShowDebugHistos(); /** Data Processing */ void ExecChain(); //Processes the full execution chain void Exec(UInt_t nLevel); //Processes Element nLevel of the chain // void ExecTo(UInt_t nLevel){;}; // Processes Elements to a given Level of Plugins void ExecFrom( UInt_t nLevel); //Preocesses Elements from a given level till the end /** Finish */ void Finish(); // void StoreDebugHistograms(TString fileName){;} /** Accessors */ CbmMvdStationPar* GetParameterFile() { return fParameter; }; CbmMvdSensor* GetSensor(UInt_t nSensor) { return (CbmMvdSensor*) fSensorArray->At(nSensor); }; void PrintParameter() { fParameter->Print(); }; void SetProduceNoise(); static void SetSensorTyp(CbmMvdSensorTyp typ) { fSensorTyp = typ; }; private: static CbmMvdSensorTyp fSensorTyp; TClonesArray* fSensorArray; TClonesArray* fSensorIDArray; //Array of Sensor ID UInt_t fPluginCount; TClonesArray* foutput; TClonesArray* foutputHits; TClonesArray* foutputDigis; TClonesArray* foutputCluster; //khun TClonesArray* foutputDigiMatchs; TClonesArray* foutputHitMatchs; TClonesArray* fcurrentEvent; Float_t fepsilon[3]; /** Data members */ Int_t fDigiPlugin; Int_t fHitPlugin; Int_t fClusterPlugin; static CbmMvdDetector* fInstance; Bool_t fSensorArrayFilled; Bool_t initialized; Bool_t fFinished; TString fName; CbmMvdStationPar* fParameter; CbmMvdDetector(const CbmMvdDetector&); CbmMvdDetector operator=(const CbmMvdDetector&); ClassDef(CbmMvdDetector, 1); }; #endif