diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx index d7c0ee9e092935d89d2dacd2f0a3a8bb2620c038..560141e41ee3b66eed3464cfd7a6273ed595ed02 100644 --- a/mvd/CbmMvdDetector.cxx +++ b/mvd/CbmMvdDetector.cxx @@ -265,6 +265,26 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin) //---------------------------------------------------------------------- +Int_t CbmMvdDetector::DetectPlugin(Int_t pluginID) +{ + // Detects the position of a plugin with a given Plugin-ID (set in the plugin implementation constructor) in the plugin-array of the sensors + + Int_t nDigitizerPlugin=-1; + + if (!fSensorArrayFilled) {cout << "-W - CbmMvdDetector::DetectPlugin: You tried to access sensor plugins while the detector is not initialized yet." << endl; return -1;} + CbmMvdSensor* sensor=GetSensor(0); + TObjArray* pluginArray= sensor->GetPluginArray(); + + Int_t nPlugin=pluginArray->GetEntries(); + for(Int_t i=0; i<nPlugin;i++) { + CbmMvdSensorPlugin* plugin= (CbmMvdSensorPlugin*) pluginArray->At(i); + // cout << "- I - CbmMvdDetector::DetectPlugin: PlugInID = " << plugin->GetPluginIDNumber() << " Position: "<< i << endl; + if (pluginID==plugin->GetPluginIDNumber()){return i;} + } + + + return -1; +} //----------------------------------------------------------------------- void CbmMvdDetector::Init() @@ -344,7 +364,6 @@ void CbmMvdDetector::SendInput(TClonesArray* input) * * **/ - CbmMvdPoint* point; Int_t nEntries = input->GetEntriesFast(); Int_t nSensors = fSensorArray->GetEntriesFast(); @@ -357,7 +376,7 @@ void CbmMvdDetector::SendInput(TClonesArray* input) sensor = (CbmMvdSensor*) fSensorArray->At(k); if (point->GetDetectorID() == sensor->GetDetectorID()) { - sensor->SendInput(point); + sensor->SendInputToPlugin(sensor->GetDigiPlugin(),(TObject*) point); send = true; } } diff --git a/mvd/CbmMvdDetector.h b/mvd/CbmMvdDetector.h index 31cac62bc8ff6aacd5d338f670159b16f3318d1b..53bcf8a7021b754c096b60449c158dc6b9cb4cf0 100644 --- a/mvd/CbmMvdDetector.h +++ b/mvd/CbmMvdDetector.h @@ -73,10 +73,12 @@ public: TClonesArray* GetOutputCluster(); //khun TClonesArray* GetOutputArray(Int_t nPlugin); TClonesArray* GetSensorArray(){return fSensorArray;}; + CbmMvdSensor* GetSensor(Int_t nSensor) {return (CbmMvdSensor*) fSensorArray->At(nSensor);} TClonesArray* GetSensorIDArray(){return fSensorIDArray;}; // TClonesArray* GetClonesArray(Int_t dataLevel){ return 0;} Int_t GetSensorArraySize() { return (fSensorArray->GetEntriesFast()); } - UInt_t GetPluginArraySize() { return fPluginCount - 1; } + Int_t GetPluginArraySize() { return fPluginCount - 1; } + Int_t DetectPlugin(Int_t pluginID); TClonesArray* GetCurrentEvent(); diff --git a/mvd/CbmMvdDigitizer.cxx b/mvd/CbmMvdDigitizer.cxx index a8f0eeef0eea07a583db4a64166da3db0ce0c3f1..deb978ea94d8a1665fbb4a557c8280f1d5998517 100644 --- a/mvd/CbmMvdDigitizer.cxx +++ b/mvd/CbmMvdDigitizer.cxx @@ -270,6 +270,7 @@ InitStatus CbmMvdDigitizer::Init() return kERROR; } } + CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask(); fDetector->AddPlugin(digiTask); @@ -307,7 +308,8 @@ InitStatus CbmMvdDigitizer::ReInit() { return kSUCCESS; } // ----- Virtual method Finish ----------------------------------------- void CbmMvdDigitizer::Finish() -{ +{ //Int_t i = DetectPlugin (100); + //cout << "CbmMvdDigitizer::Finish() Autodetect: " << i <<" Manual Detect " << fDigiPluginNr << endl; // cout<< endl << "finishing" << endl; fDetector->Finish(); PrintParameters(); @@ -336,6 +338,24 @@ void CbmMvdDigitizer::ResetArrays() void CbmMvdDigitizer::GetMvdGeometry() {} // ------------------------------------------------------------------------- +Int_t CbmMvdDigitizer::DetectPlugin(Int_t pluginID) +{ Int_t nDigitizerPlugin=-1; + + CbmMvdDetector* detector= CbmMvdDetector::Instance(); + return detector->DetectPlugin(pluginID); + /*CbmMvdSensor* sensor=detector->GetSensor(0); + TObjArray* pluginArray= sensor->GetPluginArray(); + + Int_t nPlugin=pluginArray->GetEntries(); + for(Int_t i=0; i<nPlugin;i++) { + CbmMvdSensorPlugin* plugin= (CbmMvdSensorPlugin*) pluginArray->At(i); + cout << "CbmMvdDigitizer::DetectDigitizerPlugin: PlugInID = " << plugin->GetPluginIDNumber() << endl; + if (pluginID==plugin->GetPluginIDNumber()){return i;} + } + + + return -1;*/ +} // ----- Private method PrintParameters -------------------------------- void CbmMvdDigitizer::PrintParameters() diff --git a/mvd/CbmMvdDigitizer.h b/mvd/CbmMvdDigitizer.h index c5ea494d58f0f1cdfb8a1e0114855f8956a7861c..9be5dea481b1ce460ceffe6f4da3303feddd5aa8 100644 --- a/mvd/CbmMvdDigitizer.h +++ b/mvd/CbmMvdDigitizer.h @@ -66,6 +66,7 @@ public: void ShowDebugHistograms() { fShowDebugHistos = kTRUE; } void SetProduceNoise() { fNoiseSensors = kTRUE; }; + Int_t DetectPlugin(Int_t pluginID); /** @brief Clear data arrays **/ @@ -92,7 +93,7 @@ private: std::pair<Float_t, Int_t> fPerformanceDigi; - UInt_t fDigiPluginNr; + Int_t fDigiPluginNr; Double_t fFakeRate; // Fake hit rate Int_t fNPileup; // Number of pile-up background events diff --git a/mvd/CbmMvdSensor.h b/mvd/CbmMvdSensor.h index f93f9ecb79a8c1b841d44f94c118a1772c1b38f3..15678fb6061471496a29dab3098d91a5afe04853 100644 --- a/mvd/CbmMvdSensor.h +++ b/mvd/CbmMvdSensor.h @@ -93,6 +93,7 @@ public: Int_t GetDigiPlugin() const { return fDigiPlugin; }; Int_t GetHitPlugin() const { return fHitPlugin; }; Int_t GetClusterPlugin() const { return fClusterPlugin; } + TObjArray* GetPluginArray() {return fPluginArray;} void SetDigiPlugin(const Int_t& nPlugin) { fDigiPlugin = nPlugin; }; void SetHitPlugin(const Int_t& nPlugin) { fHitPlugin = nPlugin; }; diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx index fadbfc5680eafdcecefa855e756b0890e73f5db1..9f3abbe13cd5077de8ee512478b2212e5fe097af 100644 --- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx +++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx @@ -155,7 +155,7 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask() { fRandGen.SetSeed(2736); fproduceNoise = kFALSE; - fPluginIDNumber= 00100; + fPluginIDNumber= 100; } // ------------------------------------------------------------------------- @@ -256,7 +256,7 @@ CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask(Int_t iMode) , h_LengthVsEloss(NULL) , h_ElossVsMomIn(NULL) -{ fPluginIDNumber= 00100; +{ fPluginIDNumber= 100; cout << "Starting CbmMvdSensorDigitizerTask::CbmMvdSensorDigitizerTask() " << endl; fRandGen.SetSeed(2736); @@ -386,6 +386,13 @@ void CbmMvdSensorDigitizerTask::SetInput(CbmMvdPoint* point) new ((*fInputPoints)[fInputPoints->GetEntriesFast()]) CbmMvdPoint(*((CbmMvdPoint*) point)); } +//----------------------------------------------------------------------------- + +void CbmMvdSensorDigitizerTask::SetInput(TObject* point) +{ + + new ((*fInputPoints)[fInputPoints->GetEntriesFast()]) CbmMvdPoint(*((CbmMvdPoint*) point)); +} // -------------- public method ExecChain ------------------------------------ diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h index 9984b5709926e0b130e81a1c7185fa169b9a0d4d..026ab52cef0e161d444a313d5b3aba77f2bb569e 100644 --- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h +++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.h @@ -67,6 +67,7 @@ public: /** fill buffer **/ void SetInputArray(TClonesArray* inputStream); void SetInput(CbmMvdPoint* point); + void SetInput(TObject*); //overwrite /** Execute **/ void Exec();