Skip to content
Snippets Groups Projects
Commit 2048ca6d authored by Alexandru Bercuci's avatar Alexandru Bercuci
Browse files

add support for full TS reconstruction in TRD2D

parent e408d322
No related branches found
No related tags found
1 merge request!1179WIP : TRD2D fixes asked by the community
...@@ -79,12 +79,24 @@ Bool_t CbmTrdClusterFinder::AddCluster(CbmTrdCluster* c) ...@@ -79,12 +79,24 @@ Bool_t CbmTrdClusterFinder::AddCluster(CbmTrdCluster* c)
// ---- addDigisToModules ---- // ---- addDigisToModules ----
UInt_t CbmTrdClusterFinder::addDigisToModules() UInt_t CbmTrdClusterFinder::addDigisToModules()
{ {
const int NDIGICHUNK = 100; // force flush of cluster buffer once every NDIGICHUNK digi to avoid memory exhaustion
UInt_t ndigis = static_cast<UInt_t>(std::abs(CbmDigiManager::Instance()->GetNofDigis(ECbmModuleId::kTrd))); UInt_t ndigis = static_cast<UInt_t>(std::abs(CbmDigiManager::Instance()->GetNofDigis(ECbmModuleId::kTrd)));
if (ndigis == 0) return 0; if (ndigis == 0) return 0;
for (size_t idigi = 0; idigi < ndigis; idigi++) {
int jdigi(0);
for (size_t idigi(0); idigi < ndigis; idigi++) {
addDigiToModule(idigi); addDigiToModule(idigi);
// once in a while dump finished clusters
// TODO ad hoc condition. Maybe a find a better one
if (jdigi >= NDIGICHUNK) {
processDigisInModules(jdigi, nullptr, false);
jdigi = 0;
}
else
jdigi++;
} }
return ndigis; return jdigi;
} }
// ---- addDigisToModules ---- // ---- addDigisToModules ----
...@@ -118,14 +130,16 @@ void CbmTrdClusterFinder::addDigiToModule(UInt_t digiIdx) ...@@ -118,14 +130,16 @@ void CbmTrdClusterFinder::addDigiToModule(UInt_t digiIdx)
} }
// ---- processDigisInModules ---- // ---- processDigisInModules ----
void CbmTrdClusterFinder::processDigisInModules(UInt_t ndigis, CbmEvent* event) void CbmTrdClusterFinder::processDigisInModules(UInt_t ndigis, CbmEvent* event, bool clr)
{ {
// printf("AB :: processDigisInModules(%d, %p) clr[%c]\n", ndigis, (void*) event, (clr?'Y':'N'));
CbmTrdModuleRec* mod(NULL); CbmTrdModuleRec* mod(NULL);
Int_t digiCounter(0), clsCounter(0); Int_t digiCounter(0), clsCounter(0);
for (std::map<Int_t, CbmTrdModuleRec*>::iterator imod = fModules.begin(); imod != fModules.end(); imod++) { for (std::map<Int_t, CbmTrdModuleRec*>::iterator imod = fModules.begin(); imod != fModules.end(); imod++) {
mod = imod->second; mod = imod->second;
digiCounter += mod->GetOverThreshold(); digiCounter += mod->GetOverThreshold();
clsCounter += mod->FindClusters(); clsCounter += mod->FindClusters(event || clr);
AddClusters(mod->GetClusters(), event, kTRUE); AddClusters(mod->GetClusters(), event, kTRUE);
} }
......
...@@ -187,10 +187,11 @@ private: ...@@ -187,10 +187,11 @@ private:
/** /**
* @brief Call the clusterizer function of each module * @brief Call the clusterizer function of each module
* *
* @param ndigis * @param ndigis total number of digis processed
* @param event * @param event link to digi event in case event-by-event reco is activated
* @param clr force clear clusters buffers
*/ */
void processDigisInModules(UInt_t ndigis, CbmEvent* event = nullptr); void processDigisInModules(UInt_t ndigis, CbmEvent* event = nullptr, bool clr = true);
/** /**
* @brief Adds the module corresponding to the address of the passed digi to the ModuleMap (fModules) * @brief Adds the module corresponding to the address of the passed digi to the ModuleMap (fModules)
......
...@@ -45,7 +45,7 @@ public: ...@@ -45,7 +45,7 @@ public:
/** /**
* \brief Steering routine for finding digits clusters * \brief Steering routine for finding digits clusters
**/ **/
virtual Int_t FindClusters() = 0; virtual Int_t FindClusters(bool clr = true) = 0;
virtual Int_t GetOverThreshold() const { return 0; } virtual Int_t GetOverThreshold() const { return 0; }
virtual TClonesArray* GetClusters() { return fClusters; } virtual TClonesArray* GetClusters() { return fClusters; }
virtual const TClonesArray* GetClusters() const { return fClusters; } virtual const TClonesArray* GetClusters() const { return fClusters; }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment