From 5a497ca87f13dc9c0201a8f11f9441a54517cd26 Mon Sep 17 00:00:00 2001 From: Michael Deveaux <deveaux@physik.uni-frankfurt.de> Date: Wed, 18 Jan 2023 10:55:08 +0100 Subject: [PATCH] Data transfer by TObject added to Clusterfinder and hit finder --- macro/mvd/qa/mvd_qa1_transUrqmd.C | 2 +- mvd/CbmMvdClusterfinder.cxx | 40 ++++++++++----- mvd/CbmMvdHitfinder.cxx | 51 ++++++++++++++++--- mvd/CbmMvdHitfinder.h | 4 +- mvd/CbmMvdSensor.h | 2 +- .../tasks/CbmMvdSensorClusterfinderTask.cxx | 4 +- .../tasks/CbmMvdSensorDigitizerTask.cxx | 8 +-- 7 files changed, 81 insertions(+), 30 deletions(-) diff --git a/macro/mvd/qa/mvd_qa1_transUrqmd.C b/macro/mvd/qa/mvd_qa1_transUrqmd.C index f9730d5238..6ad2d6d393 100644 --- a/macro/mvd/qa/mvd_qa1_transUrqmd.C +++ b/macro/mvd/qa/mvd_qa1_transUrqmd.C @@ -163,7 +163,7 @@ void mvd_qa1_transUrqmd(const char* setup = "sis100_electron") // --- Uniform distribution of event plane angle primGen->SetEventPlane(0., 2. * TMath::Pi()); // --- Get target parameters - TVector3 targetPos(0., 0., 0.); + TVector3 targetPos(0., 0., -44.); Double_t tDz = 0.; if (target) { targetPos = target->GetPosition(); diff --git a/mvd/CbmMvdClusterfinder.cxx b/mvd/CbmMvdClusterfinder.cxx index 6217ec1338..9b566b3c89 100644 --- a/mvd/CbmMvdClusterfinder.cxx +++ b/mvd/CbmMvdClusterfinder.cxx @@ -83,21 +83,37 @@ CbmMvdClusterfinder::~CbmMvdClusterfinder() void CbmMvdClusterfinder::Exec(Option_t* /*opt*/) { // --- Start timer - fTimer.Start(); + fTimer.Start(); - fCluster->Delete(); - if (fDigiMan->GetNofDigis(ECbmModuleId::kMvd)) { + fCluster->Delete(); + if (fDigiMan->GetNofDigis(ECbmModuleId::kMvd)) { if (fVerbose) cout << "//----------------------------------------//"; if (fVerbose) cout << endl << "Send Input" << endl; - fDetector->SendInputDigis(fDigiMan); - if (fVerbose) cout << "Execute ClusterPlugin Nr. " << fClusterPluginNr << endl; - fDetector->Exec(fClusterPluginNr); - if (fVerbose) cout << "End Chain" << endl; - if (fVerbose) cout << "Start writing Cluster" << endl; - fCluster->AbsorbObjects(fDetector->GetOutputCluster(), 0, fDetector->GetOutputCluster()->GetEntriesFast() - 1); - if (fVerbose) cout << "Total of " << fCluster->GetEntriesFast() << " Cluster in this Event" << endl; - if (fVerbose) cout << "//----------------------------------------//" << endl; - LOG(info) << "+ " << setw(20) << GetName() << ": Created: " << fCluster->GetEntriesFast() << " cluster in " << fixed + + Int_t nTargetPlugin=fDetector->DetectPlugin(200); + CbmMvdDigi* digi=0; + + Int_t nDigis = fDigiMan->GetNofDigis(ECbmModuleId::kMvd); + + for (Int_t i = 0; i < nDigis; i++) { + digi = new CbmMvdDigi(*(fDigiMan->Get<CbmMvdDigi>(i))); + digi->SetRefId(i); + + fDetector->SendInputToSensorPlugin(digi->GetDetectorId(), nTargetPlugin, static_cast<TObject*>(digi)); + } + + + + + //fDetector->SendInputDigis(fDigiMan); + if (fVerbose) cout << "Execute ClusterPlugin Nr. " << fClusterPluginNr << endl; + fDetector->Exec(fClusterPluginNr); + if (fVerbose) cout << "End Chain" << endl; + if (fVerbose) cout << "Start writing Cluster" << endl; + fCluster->AbsorbObjects(fDetector->GetOutputCluster(), 0, fDetector->GetOutputCluster()->GetEntriesFast() - 1); + if (fVerbose) cout << "Total of " << fCluster->GetEntriesFast() << " Cluster in this Event" << endl; + if (fVerbose) cout << "//----------------------------------------//" << endl; + LOG(info) << "+ " << setw(20) << GetName() << ": Created: " << fCluster->GetEntriesFast() << " cluster in " << fixed << setprecision(6) << fTimer.RealTime() << " s"; } diff --git a/mvd/CbmMvdHitfinder.cxx b/mvd/CbmMvdHitfinder.cxx index cab28ff421..2664b764cd 100644 --- a/mvd/CbmMvdHitfinder.cxx +++ b/mvd/CbmMvdHitfinder.cxx @@ -44,7 +44,7 @@ CbmMvdHitfinder::CbmMvdHitfinder() , fInputCluster(NULL) , fHits(NULL) , fHitfinderPluginNr(0) - , useClusterfinder(kFALSE) + , fUseClusterfinder(kFALSE) , fShowDebugHistos(kFALSE) , fTimer() , fmode(-1) @@ -60,7 +60,7 @@ CbmMvdHitfinder::CbmMvdHitfinder(const char* name, Int_t iVerbose) , fInputCluster(NULL) , fHits(NULL) , fHitfinderPluginNr(0) - , useClusterfinder(kFALSE) + , fUseClusterfinder(kFALSE) , fShowDebugHistos(kFALSE) , fTimer() , fmode(-1) @@ -76,7 +76,7 @@ CbmMvdHitfinder::CbmMvdHitfinder(const char* name, Int_t mode, Int_t iVerbose) , fInputCluster(NULL) , fHits(NULL) , fHitfinderPluginNr(0) - , useClusterfinder(kFALSE) + , fUseClusterfinder(kFALSE) , fShowDebugHistos(kFALSE) , fTimer() , fmode(mode) @@ -104,12 +104,47 @@ void CbmMvdHitfinder::Exec(Option_t* /*opt*/) fHits->Clear(); fTimer.Start(); - if (fDigiMan->IsPresent(ECbmModuleId::kMvd) || fInputCluster) { + Int_t nTargetPlugin= fDetector->DetectPlugin(300); + Int_t nDigis; + CbmMvdDigi* digi=0; + CbmMvdCluster* cluster=0; + + if (fDigiMan->IsPresent(ECbmModuleId::kMvd) || fInputCluster) { //checks if data sources are available if (fVerbose) cout << endl << "//----------------------------------------//" << endl; - if (!useClusterfinder) fDetector->SendInputDigis(fDigiMan); - else - fDetector->SendInputCluster(fInputCluster); + if (!fUseClusterfinder) { + fDigiMan->GetNofDigis(ECbmModuleId::kMvd); + for (Int_t i = 0; i < nDigis; i++) { + digi = new CbmMvdDigi(*(fDigiMan->Get<CbmMvdDigi>(i))); + digi->SetRefId(i); + + fDetector->SendInputToSensorPlugin(digi->GetDetectorId(), nTargetPlugin, static_cast<TObject*>(digi)); + } + } + + + //fDetector->SendInputDigis(fDigiMan); + + + + else // of if (!fUseClusterfinder) + { + + + Int_t nEntries = fInputCluster->GetEntriesFast(); + for (Int_t i = 0; i < nEntries; i++) { + cluster = (CbmMvdCluster*) fInputCluster->At(i); + cluster->SetRefId(i); + fDetector->SendInputToSensorPlugin(cluster->GetDetectorId(), nTargetPlugin, static_cast<TObject*>(cluster)); + + } + } + + //fDetector->SendInputCluster(fInputCluster); + + if (fVerbose) cout << "Execute HitfinderPlugin Nr. " << fHitfinderPluginNr << endl; + + fDetector->Exec(fHitfinderPluginNr); if (fVerbose) cout << "End Chain" << endl; if (fVerbose) cout << "Start writing Hits" << endl; @@ -143,7 +178,7 @@ InitStatus CbmMvdHitfinder::Init() } // ********** Get input arrays - if (!useClusterfinder) { + if (!fUseClusterfinder) { fDigiMan = CbmDigiManager::Instance(); fDigiMan->Init(); if (!fDigiMan->IsPresent(ECbmModuleId::kMvd)) { diff --git a/mvd/CbmMvdHitfinder.h b/mvd/CbmMvdHitfinder.h index b0abceb677..32439479c7 100644 --- a/mvd/CbmMvdHitfinder.h +++ b/mvd/CbmMvdHitfinder.h @@ -39,7 +39,7 @@ public: void Exec(Option_t* opt); void UseClusterfinder(Bool_t clusterfinderFlag) { - useClusterfinder = clusterfinderFlag; + fUseClusterfinder = clusterfinderFlag; }; //* enable use of external clusterfinder void ShowDebugHistos() { fShowDebugHistos = kTRUE; } @@ -52,7 +52,7 @@ private: TClonesArray* fHits; UInt_t fHitfinderPluginNr; - Bool_t useClusterfinder; + Bool_t fUseClusterfinder; Bool_t fShowDebugHistos; TStopwatch fTimer; ///< ROOT timer Int_t fmode; diff --git a/mvd/CbmMvdSensor.h b/mvd/CbmMvdSensor.h index 15678fb606..fd521ef166 100644 --- a/mvd/CbmMvdSensor.h +++ b/mvd/CbmMvdSensor.h @@ -74,7 +74,7 @@ public: CbmMvdSensorDataSheet* GetDataSheet() { return fSensorData; } void SetDataSheet(CbmMvdSensorDataSheet* sheet) { fSensorData = sheet; } void SetMap(std::map<Int_t, Int_t> SensorMap) { fSensorMap = SensorMap; } // Get Sensor Map to identify every Sensor - void SendInput(CbmMvdPoint* point); + //void SendInput(CbmMvdPoint* point); void SendInputDigi(CbmMvdDigi* digi); void SendInputDigiToHit(CbmMvdDigi* digi); void SendInputCluster(CbmMvdCluster* cluster); diff --git a/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx b/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx index f1dd543bcf..d2e26fae71 100644 --- a/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx +++ b/mvd/plugins/tasks/CbmMvdSensorClusterfinderTask.cxx @@ -95,8 +95,8 @@ void CbmMvdSensorClusterfinderTask::InitTask(CbmMvdSensor* mysensor) fSensor = mysensor; //cout << "-Start- " << GetName() << ": Initialisation of sensor " << fSensor->GetName() << endl; - fInputBuffer = new TClonesArray("CbmMvdDigi", 10000); - fOutputBuffer = new TClonesArray("CbmMvdCluster", 10000); + fInputBuffer = new TClonesArray("CbmMvdDigi", 100); + fOutputBuffer = new TClonesArray("CbmMvdCluster", 100); //Add charge collection histograms diff --git a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx index 9f3abbe13c..705131320c 100644 --- a/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx +++ b/mvd/plugins/tasks/CbmMvdSensorDigitizerTask.cxx @@ -998,11 +998,11 @@ void CbmMvdSensorDigitizerTask::InitTask(CbmMvdSensor* mySensor) // cout << "-I- " << GetName() << ": Initialisation of sensor " << fSensor->GetName() << endl; - fDigis = new TClonesArray("CbmMvdDigi", 10000); - fDigiMatch = new TClonesArray("CbmMatch", 10000); + fDigis = new TClonesArray("CbmMvdDigi", 100); + fDigiMatch = new TClonesArray("CbmMatch", 100); - fOutputBuffer = new TClonesArray("CbmMvdDigi", 10000); - fInputPoints = new TClonesArray("CbmMvdPoint", 10000); + fOutputBuffer = new TClonesArray("CbmMvdDigi", 100); + fInputPoints = new TClonesArray("CbmMvdPoint", 100); if (!fSensor) { Fatal(GetName(), "Fatal error: Init(CbmMvdSensor*) called without valid pointer, " -- GitLab