diff --git a/mvd/CMakeLists.txt b/mvd/CMakeLists.txt index d0dd43e9f54ea1ecd8416180fdb98e1c5bc8c61a..b8696c1a120d026e652ec1f52bddbbdd9f7e0ee2 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 d4566456f9599ffcf0c0010e3292e914ee3444ec..d7c0ee9e092935d89d2dacd2f0a3a8bb2620c038 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 f899f42a5c1fa20575b8615f47078238e6596db4..31cac62bc8ff6aacd5d338f670159b16f3318d1b 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 ca6cd870bc5793219db6b343a4b552ba904baace..84f5bbcf903797c124b00974232c6ac9e7b22a2f 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 5b1f3eda2216bb986cc2642b389ef181f9b0c54f..f93f9ecb79a8c1b841d44f94c118a1772c1b38f3 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 9f5bcae6b7be3e3b09e2220baa01beb36aa52755..efc92db4f4f50ce1f458661f84df3c2943a24159 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 86a6f2d31411d83ddd3b7b2fc402106c180cd321..6067439ec5b9b2a4f03edfb348dd8785f389d883 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 0000000000000000000000000000000000000000..874f39254331fc09dca389a02f689d177697c351 --- /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 8b376854fa49c3c59e1e377a2c459b5423918f8c..fadbfc5680eafdcecefa855e756b0890e73f5db1 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);