diff --git a/core/detectors/trd/CbmTrdParSet.cxx b/core/detectors/trd/CbmTrdParSet.cxx index 469c8a123c58e7483e27c677db443348eade823e..0b353d42e5fa13e53b10e82a179b7b871bb8e0c0 100644 --- a/core/detectors/trd/CbmTrdParSet.cxx +++ b/core/detectors/trd/CbmTrdParSet.cxx @@ -28,8 +28,8 @@ CbmTrdParSet::CbmTrdParSet(const char* name, const char* title, const char* cont //_______________________________________________________________________________ CbmTrdParSet::~CbmTrdParSet() { - for (map<Int_t, CbmTrdParMod*>::iterator imod = fModuleMap.begin(); imod != fModuleMap.end(); imod++) - if (imod->second) delete imod->second; + // for (map<Int_t, CbmTrdParMod*>::iterator imod = fModuleMap.begin(); imod != fModuleMap.end(); imod++) + // if (imod->second) delete imod->second; // TODO check ownership of module parameters fModuleMap.clear(); } diff --git a/sim/detectors/trd/CbmTrdDigitizer.cxx b/sim/detectors/trd/CbmTrdDigitizer.cxx index 8ac36826bbee615517723f735b380127572948bb..6e71dfa8be986a2f03a6bfa70fff5a43693aabbc 100644 --- a/sim/detectors/trd/CbmTrdDigitizer.cxx +++ b/sim/detectors/trd/CbmTrdDigitizer.cxx @@ -362,7 +362,7 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // try to load Geometry parameters for module const CbmTrdParModGeo* pGeo(NULL); if (!fGeoPar || !(pGeo = (const CbmTrdParModGeo*) fGeoPar->GetModulePar(detId))) { - LOG(debug) << GetName() << "::AddModule : No Geo params for module @ " << path << ". Using default."; + LOG(info) << GetName() << "::AddModule : No Geo params for module " << detId << " @ " << path << ". Using default."; module->SetGeoPar(new CbmTrdParModGeo(Form("TRD_%d", detId), path)); } else @@ -371,7 +371,8 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // try to load read-out parameters for module const CbmTrdParModDigi* pDigi(NULL); if (!fDigiPar || !(pDigi = (const CbmTrdParModDigi*) fDigiPar->GetModulePar(detId))) { - LOG(debug) << GetName() << "::AddModule : No Read-Out params for module @ " << path << ". Using default."; + LOG(info) << GetName() << "::AddModule : No Read-Out params for module " << detId << " @ " << path + << ". Using default."; } else module->SetDigiPar(pDigi); @@ -381,8 +382,7 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // try to load ASIC parameters for module CbmTrdParModAsic* pAsic(NULL); if (!fAsicPar || !(pAsic = (CbmTrdParModAsic*) fAsicPar->GetModulePar(detId))) { - LOG(debug) << GetName() << "::AddModule : No ASIC params for module @ " << path << ". Using default."; - module->SetAsicPar(); // map ASIC channels to read-out channels - need ParModDigi already loaded + LOG(fatal) << GetName() << "::AddModule : No ASIC params for module " << detId << " @ " << path << ". Abort."; } else module->SetAsicPar(pAsic); @@ -390,7 +390,8 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // try to load Chamber parameters for module const CbmTrdParModGas* pChmb(NULL); if (!fGasPar || !(pChmb = (const CbmTrdParModGas*) fGasPar->GetModulePar(detId))) { - LOG(debug) << GetName() << "::AddModule : No Gas params for module @ " << path << ". Using default."; + LOG(info) << GetName() << "::AddModule : No Gas params for module " << detId << " @ " << path + << ". Using default."; } else module->SetChmbPar(pChmb); @@ -398,7 +399,8 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // try to load Gain parameters for module const CbmTrdParModGain* pGain(NULL); if (!fGainPar || !(pGain = (const CbmTrdParModGain*) fGainPar->GetModulePar(detId))) { - LOG(debug) << GetName() << "::AddModule : No Gain params for module @ " << path << ". Using default."; + LOG(info) << GetName() << "::AddModule : No Gain params for module " << detId << " @ " << path + << ". Using default."; } else module->SetGainPar(pGain); diff --git a/sim/detectors/trd/CbmTrdModuleSim2D.cxx b/sim/detectors/trd/CbmTrdModuleSim2D.cxx index 020eed0b558fa62aafa9959ad61bf4228f03876e..2e54acc03503dbe91455315a1968efa77270774f 100644 --- a/sim/detectors/trd/CbmTrdModuleSim2D.cxx +++ b/sim/detectors/trd/CbmTrdModuleSim2D.cxx @@ -12,10 +12,10 @@ #include "CbmTrdDigitizer.h" #include "CbmTrdFASP.h" #include "CbmTrdParFasp.h" +#include "CbmTrdParModAsic.h" #include "CbmTrdParModDigi.h" #include "CbmTrdParModGain.h" #include "CbmTrdParModGas.h" -#include "CbmTrdParSetAsic.h" #include "CbmTrdPoint.h" #include "CbmTrdRadiator.h" #include "CbmTrdTrianglePRF.h" @@ -536,17 +536,30 @@ Bool_t CbmTrdModuleSim2D::ScanPadPlane(Double_t* point, Double_t DX, Double_t EL } //_______________________________________________________________________________________________ -void CbmTrdModuleSim2D::AddDigi(Int_t address, Double_t* charge, Double_t time /*, Double_t fTR*/) +void CbmTrdModuleSim2D::AddDigi(Int_t pad, Double_t* charge, Double_t time /*, Double_t fTR*/) { /** * Adding triangular digits to time slice buffer */ + // check the status of FEE for the current channels + int faspAddress = fAsicPar->GetAsicAddress((pad << 1)); + const CbmTrdParFasp* p = static_cast<const CbmTrdParFasp*>(fAsicPar->GetAsicPar(faspAddress)); + if (!p) { + LOG(debug) << GetName() << "::AddDigi : Could not find FASP params for address=" << faspAddress << " @ pad=" << pad; + return; + } + if (charge[0] > 0) { // mask T digi + if (p->GetChannel(pad, 0)->IsMasked()) charge[0] = 0; + } + if (charge[1] > 0) { // mask R digi + if (p->GetChannel(pad, 1)->IsMasked()) charge[1] = 0; + } // make digi CbmTrdDigi *digi(NULL), *sdigi(NULL); CbmMatch* digiMatch(NULL); - digi = new CbmTrdDigi(address, charge[0], charge[1], + digi = new CbmTrdDigi(pad, charge[0], charge[1], ULong64_t(TMath::Ceil(time / CbmTrdDigi::Clk(CbmTrdDigi::eCbmTrdAsicType::kFASP)))); digi->SetAddressModule(fModAddress); // may not be needed in the future digiMatch = new CbmMatch(); @@ -555,28 +568,28 @@ void CbmTrdModuleSim2D::AddDigi(Int_t address, Double_t* charge, Double_t time / //digi->SetMatch(digiMatch); // get the link to saved digits - std::map<Int_t, std::vector<pair<CbmTrdDigi*, CbmMatch*>>>::iterator it = fBuffer.find(address); + std::map<Int_t, std::vector<pair<CbmTrdDigi*, CbmMatch*>>>::iterator it = fBuffer.find(pad); // check for saved if (it != fBuffer.end()) { Bool_t kINSERT(kFALSE); - for (std::vector<pair<CbmTrdDigi*, CbmMatch*>>::iterator itv = fBuffer[address].begin(); - itv != fBuffer[address].end(); itv++) { + for (std::vector<pair<CbmTrdDigi*, CbmMatch*>>::iterator itv = fBuffer[pad].begin(); itv != fBuffer[pad].end(); + itv++) { sdigi = itv->first; if (sdigi->GetTime() <= digi->GetTime()) continue; // arrange digits in increasing order of time - fBuffer[address].insert(itv, make_pair(digi, digiMatch)); + fBuffer[pad].insert(itv, make_pair(digi, digiMatch)); if (VERBOSE) cout << " => Save(I) " << digi->ToString(); kINSERT = kTRUE; break; } if (!kINSERT) { - fBuffer[address].push_back(make_pair(digi, digiMatch)); + fBuffer[pad].push_back(make_pair(digi, digiMatch)); if (VERBOSE) cout << " => Save(B) " << digi->ToString(); } } else { // add address if (VERBOSE) cout << " => Add " << digi->ToString(); - fBuffer[address].push_back(make_pair(digi, digiMatch)); + fBuffer[pad].push_back(make_pair(digi, digiMatch)); } }