From d7b4ca5fc86955254f0985622022e0ca1d14d35a Mon Sep 17 00:00:00 2001 From: Michael Deveaux <deveaux@physik.uni-frankfurt.de> Date: Tue, 17 Jan 2023 10:18:53 +0100 Subject: [PATCH] Unique Identifier for CbmMvdSensor Plugins added. This is to allow for giving the implementations of the plugins a unique ID. See /plugins/PluginNamingConvention.txt for details. Added SendData(Int_t nSensor, Int_t nPlugin, TObject* data) to CbmMvdSensor and CbmMvdDetector This is to send data directly from the FairTask. --- mvd/CMakeLists.txt | 8 ++-- mvd/CbmMvdDetector.cxx | 41 ++++++++++++++++++- mvd/CbmMvdDetector.h | 4 ++ mvd/CbmMvdSensor.cxx | 14 ++++++- mvd/CbmMvdSensor.h | 1 + mvd/plugins/CbmMvdSensorPlugin.cxx | 2 + mvd/plugins/CbmMvdSensorPlugin.h | 4 ++ mvd/plugins/PluginNamingConvention.txt | 14 +++++++ .../tasks/CbmMvdSensorDigitizerTask.cxx | 4 +- 9 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 mvd/plugins/PluginNamingConvention.txt diff --git a/mvd/CMakeLists.txt b/mvd/CMakeLists.txt index d0dd43e9f5..b8696c1a12 100644 --- a/mvd/CMakeLists.txt +++ b/mvd/CMakeLists.txt @@ -44,7 +44,7 @@ set(SRCS CbmMvdDetector.cxx CbmMvdSensor.cxx CbmMvdDigiToHit.cxx - CbmMvdDigiToHitTB.cxx + # CbmMvdDigiToHitTB.cxx CbmMvdTrackingInterface.cxx #OLD @@ -92,9 +92,9 @@ install(FILES tools/CbmMvdHelper.h install(FILES plugins/CbmMvdSensorPlugin.h DESTINATION include/mvd/plugins ) -install(FILES SensorDataSheets/CbmMvdMimosa26AHR.h +install(FILES #SensorDataSheets/CbmMvdMimosa26AHR.h SensorDataSheets/CbmMvdSensorDataSheet.h - SensorDataSheets/CbmMvdMimosa34.h + #SensorDataSheets/CbmMvdMimosa34.h SensorDataSheets/CbmMvdMimosis.h DESTINATION include/mvd/SensorDataSheets ) @@ -107,7 +107,7 @@ install(FILES plugins/tasks/CbmMvdSensorClusterfinderTask.h plugins/tasks/CbmMvdSensorDigitizerTask.h plugins/tasks/CbmMvdSensorDigitizerTBTask.h plugins/tasks/CbmMvdSensorDigiToHitTask.h -# plugins/tasks/CbmMvdSensorFindHitTask.h + plugins/tasks/CbmMvdSensorFindHitTask.h plugins/tasks/CbmMvdSensorHitfinderTask.h plugins/tasks/CbmMvdSensorTask.h DESTINATION include/mvd/plugins/tasks diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx index d4566456f9..d7c0ee9e09 100644 --- a/mvd/CbmMvdDetector.cxx +++ b/mvd/CbmMvdDetector.cxx @@ -327,7 +327,11 @@ void CbmMvdDetector::SetProduceNoise() } } //----------------------------------------------------------------------- - +void CbmMvdDetector::SendInputToSensorPlugin(Int_t nSensor, Int_t nPlugin, TObject* input) +{ + CbmMvdSensor* sensor=(CbmMvdSensor*)fSensorArray->At(nSensor); + sensor->SendInputToPlugin(nPlugin,input); +} //----------------------------------------------------------------------- void CbmMvdDetector::SendInput(TClonesArray* input) { @@ -362,6 +366,41 @@ void CbmMvdDetector::SendInput(TClonesArray* input) } //----------------------------------------------------------------------- +//----------------------------------------------------------------------- +void CbmMvdDetector::SendInputNeutral(TClonesArray* input) +{ + /** + * + * Sending event to sensors, + * each sensor gets only his own points + * + * + * + * **/ +/* + + TObject* point; + Int_t nEntries = input->GetEntriesFast(); + Int_t nSensors = fSensorArray->GetEntriesFast(); + CbmMvdSensor* sensor; + Bool_t send = kFALSE; + for (Int_t i = 0; i < nEntries; i++) { + point = (CbmMvdPoint*) input->At(i); + point->SetPointId(i); + for (Int_t k = 0; k < nSensors; k++) { + sensor = (CbmMvdSensor*) fSensorArray->At(k); + + if (point->GetDetectorID() == sensor->GetDetectorID()) { + sensor->SendInput(point); + send = true; + } + } + if (!send) LOG(warn) << "Point not send to any sensor: " << point->GetDetectorID(); + } + +*/ +} +//----------------------------------------------------------------------- //----------------------------------------------------------------------- void CbmMvdDetector::SendInputDigis(CbmDigiManager* digiMan) diff --git a/mvd/CbmMvdDetector.h b/mvd/CbmMvdDetector.h index f899f42a5c..31cac62bc8 100644 --- a/mvd/CbmMvdDetector.h +++ b/mvd/CbmMvdDetector.h @@ -58,6 +58,8 @@ public: /** Data interface */ void SendInput(TClonesArray* input); + void SendInputNeutral(TClonesArray* input); + void SendInputToSensorPlugin(Int_t nSensor, Int_t nPlugin, TObject* input); void SendInputDigis(CbmDigiManager* digiMan); void SendInputDigis(TClonesArray* digis); void SendInputDigisToHits(TClonesArray* digis); @@ -70,6 +72,8 @@ public: TClonesArray* GetOutputDigiMatchs(); TClonesArray* GetOutputCluster(); //khun TClonesArray* GetOutputArray(Int_t nPlugin); + TClonesArray* GetSensorArray(){return fSensorArray;}; + TClonesArray* GetSensorIDArray(){return fSensorIDArray;}; // TClonesArray* GetClonesArray(Int_t dataLevel){ return 0;} Int_t GetSensorArraySize() { return (fSensorArray->GetEntriesFast()); } UInt_t GetPluginArraySize() { return fPluginCount - 1; } diff --git a/mvd/CbmMvdSensor.cxx b/mvd/CbmMvdSensor.cxx index ca6cd870bc..84f5bbcf90 100644 --- a/mvd/CbmMvdSensor.cxx +++ b/mvd/CbmMvdSensor.cxx @@ -10,9 +10,11 @@ #include "CbmMvdSensor.h" //---Plugins -#include "plugins/buffers/CbmMvdSensorFrameBuffer.h" -#include "plugins/buffers/CbmMvdSensorTrackingBuffer.h" +#include "CbmMvdSensorPlugin.h" +#include "plugins/buffers/CbmMvdSensorFrameBuffer.h" // -> Not used +#include "plugins/buffers/CbmMvdSensorTrackingBuffer.h" // -> Not used #include "plugins/tasks/CbmMvdSensorClusterfinderTask.h" //not needed khun + #include "plugins/tasks/CbmMvdSensorDigiToHitTask.h" #include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h" #include "plugins/tasks/CbmMvdSensorDigitizerTask.h" @@ -326,6 +328,14 @@ void CbmMvdSensor::SendInput(CbmMvdPoint* point) } // ------------------------------------------------------------------------- +void CbmMvdSensor::SendInputToPlugin(Int_t nPlugin, TObject* input) +{ + CbmMvdSensorPlugin* digitask; + digitask=(CbmMvdSensorPlugin*) fPluginArray->At(nPlugin); + digitask->SetInput(input); +} + + // ------------------------------------------------------------------------- void CbmMvdSensor::SendInputDigi(CbmMvdDigi* digi) //for old CF diff --git a/mvd/CbmMvdSensor.h b/mvd/CbmMvdSensor.h index 5b1f3eda22..f93f9ecb79 100644 --- a/mvd/CbmMvdSensor.h +++ b/mvd/CbmMvdSensor.h @@ -79,6 +79,7 @@ public: void SendInputDigiToHit(CbmMvdDigi* digi); void SendInputCluster(CbmMvdCluster* cluster); void SetStation(Int_t StationNumber) { fStationNr = StationNumber; } + void SendInputToPlugin(Int_t nPlugin, TObject* input); /** Coordinate transformations **/ diff --git a/mvd/plugins/CbmMvdSensorPlugin.cxx b/mvd/plugins/CbmMvdSensorPlugin.cxx index 9f5bcae6b7..efc92db4f4 100644 --- a/mvd/plugins/CbmMvdSensorPlugin.cxx +++ b/mvd/plugins/CbmMvdSensorPlugin.cxx @@ -21,6 +21,7 @@ CbmMvdSensorPlugin::CbmMvdSensorPlugin() , initialized(kFALSE) , fShowDebugHistos(kFALSE) , fName("CbmMvdSensorPlugin") + , fPluginIDNumber(-1) { } // ------------------------------------------------------------------------- @@ -33,6 +34,7 @@ CbmMvdSensorPlugin::CbmMvdSensorPlugin(const char* name) , initialized(kFALSE) , fShowDebugHistos(kFALSE) , fName(name) + , fPluginIDNumber(-1) { } // ------------------------------------------------------------------------- diff --git a/mvd/plugins/CbmMvdSensorPlugin.h b/mvd/plugins/CbmMvdSensorPlugin.h index 86a6f2d314..6067439ec5 100644 --- a/mvd/plugins/CbmMvdSensorPlugin.h +++ b/mvd/plugins/CbmMvdSensorPlugin.h @@ -21,6 +21,7 @@ class TClonesArray; class CbmMvdSensor; +class TObject; enum MvdSensorPluginType { @@ -39,6 +40,7 @@ public: virtual ~CbmMvdSensorPlugin(); virtual MvdSensorPluginType GetPluginType() = 0; + virtual Int_t GetPluginIDNumber (){return fPluginIDNumber;} virtual void Init() { ; } virtual void Exec() { ; } virtual void ExecChain() { ; } @@ -51,6 +53,7 @@ public: virtual void SetInputArray(TClonesArray*) { ; } virtual void SetInput(CbmMvdPoint*) { ; } + virtual void SetInput(TObject*) {;} virtual void SetOutputArray(TClonesArray*) { ; } virtual void SetNextPlugin(CbmMvdSensorPlugin* plugin) { fNextPlugin = plugin; } @@ -74,6 +77,7 @@ protected: Bool_t initialized; Bool_t fShowDebugHistos; const char* fName; + Int_t fPluginIDNumber; //Identifier for the Plugin for debugging purposes. Hardcode in implementation please. private: CbmMvdSensorPlugin& operator=(const CbmMvdSensorPlugin&); diff --git a/mvd/plugins/PluginNamingConvention.txt b/mvd/plugins/PluginNamingConvention.txt new file mode 100644 index 0000000000..874f392543 --- /dev/null +++ b/mvd/plugins/PluginNamingConvention.txt @@ -0,0 +1,14 @@ +Plugin Naming convention +-------------------------------------- +fPluginIDNumber + +0????? = Task +1????? = Buffer + +?0??? = Designed for event based simulation +?1??? = Designed for TB simulation + + +0?1?? = Digitizer-Type. Expects CbmMvdPoint as input. Provides CbmMvdDigi as output. +0?2?? = Clusterfinder-Type. Expects CbmMvdDigi as input. Provides CbmMvdCluster as output. +0?3?? = Hitfinder-Type. Expects CbmMvdCluster as input. Provides CbmMvdHit as output. diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx index 8b376854fa..fadbfc5680 100644 --- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx +++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx @@ -155,6 +155,7 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask() { fRandGen.SetSeed(2736); fproduceNoise = kFALSE; + fPluginIDNumber= 00100; } // ------------------------------------------------------------------------- @@ -254,7 +255,8 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask(Int_t iMode) , h_LengthVsAngle(NULL) , h_LengthVsEloss(NULL) , h_ElossVsMomIn(NULL) -{ + +{ fPluginIDNumber= 00100; cout << "Starting CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask() " << endl; fRandGen.SetSeed(2736); -- GitLab