Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ struct ParameterElectronics : public o2::conf::ConfigurableParamHelper<Parameter
bool doIonTail = false; ///< add ion tail in simulation
bool doIonTailPerPad = false; ///< add ion tail in simulation using pad-by-pad values
bool doCommonModePerPad = true; ///< add common mode in simulation using pad-by-pad values
bool doCommonModePerPadSaturation = true; ///< Saturate the common mode signal by the per pad pedestal value
bool doSaturationTail = false; ///< add saturation tail in simulation
bool doNoiseEmptyPads = false; ///< add noise in pads without signal in simulation
bool applyDeadMap = true; ///< apply dead channel map
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class DigitGlobalPad
o2::dataformats::LabelContainer<std::pair<MCCompLabel, int>, false>&);

/// Fold signal with previous pad signal add ion tail and ToT for sigmal saturation
void foldSignal(PrevDigitInfo& prevDigit, const int sector, const int pad, const TimeBin time, Streamer* debugStream = nullptr, const CalPad* padParams[3] = nullptr);
void foldSignal(PrevDigitInfo& prevDigit, const int sector, const int pad, const TimeBin time, Streamer* debugStream = nullptr, const CalPad* padParams[4] = nullptr);

void setID(int id) { mID = id; }
int getID() const { return mID; }
Expand Down Expand Up @@ -131,7 +131,7 @@ inline void DigitGlobalPad::addDigit(const MCCompLabel& label, float signal,
mChargePad += signal;
}

inline void DigitGlobalPad::foldSignal(PrevDigitInfo& prevDigit, const int sector, const int pad, const TimeBin time, Streamer* debugStream, const CalPad* padParams[3])
inline void DigitGlobalPad::foldSignal(PrevDigitInfo& prevDigit, const int sector, const int pad, const TimeBin time, Streamer* debugStream, const CalPad* padParams[4])
{
const auto& eleParam = ParameterElectronics::Instance();
const auto& itSettings = IonTailSettings::Instance();
Expand Down
9 changes: 7 additions & 2 deletions Detectors/TPC/simulation/include/TPCSimulation/DigitTime.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ inline float DigitTime::getCommonMode(const GEMstack& gemstack) const
template <DigitzationMode MODE>
inline void DigitTime::fillOutputContainer(std::vector<Digit>& output, dataformats::MCTruthContainer<MCCompLabel>& mcTruth,
std::vector<CommonMode>& commonModeOutput, const Sector& sector, TimeBin timeBin,
PrevDigitInfoArray* prevTime, Streamer* debugStream, const CalPad* padParams[3],
PrevDigitInfoArray* prevTime, Streamer* debugStream, const CalPad* padParams[4],
const CalDet<bool>* deadMap)
{
const auto& mapper = Mapper::instance();
Expand All @@ -148,7 +148,12 @@ inline void DigitTime::fillOutputContainer(std::vector<Digit>& output, dataforma
}
const CRU cru = mapper.getCRU(sector, iPad);
const float cmKValue = (padParams[2]) ? padParams[2]->getValue(sector.getSector(), iPad) : 1.f;
mCommonMode[cru.gemStack()] += digit.getChargePad() * eleParam.commonModeCoupling * cmKValue; // TODO: Add stack-by-stack variation?
float commonModeSignal = digit.getChargePad() * eleParam.commonModeCoupling * cmKValue; // TODO: Add stack-by-stack variation?
if (eleParam.doCommonModePerPadSaturation) {
const float pedestal = (padParams[3]) ? padParams[3]->getValue(sector.getSector(), iPad) : 77.f;
commonModeSignal = std::min(commonModeSignal, pedestal);
}
mCommonMode[cru.gemStack()] += commonModeSignal;
}

// fill common mode output container
Expand Down
3 changes: 2 additions & 1 deletion Detectors/TPC/simulation/src/DigitContainer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void DigitContainer::fillOutputContainer(std::vector<Digit>& output,
auto& cdb = CDBInterface::instance();

// ion tail per pad parameters
const CalPad* padParams[3] = {nullptr, nullptr, nullptr};
const CalPad* padParams[4] = {nullptr, nullptr, nullptr, nullptr};

if (eleParam.doIonTailPerPad) {
const auto& itSettings = IonTailSettings::Instance();
Expand All @@ -59,6 +59,7 @@ void DigitContainer::fillOutputContainer(std::vector<Digit>& output,
if (eleParam.doCommonModePerPad) {
padParams[2] = &cdb.getCMkValues();
}
padParams[3] = &cdb.getPedestals();

const bool needsPrevDigArray = eleParam.doIonTail || eleParam.doIonTailPerPad || eleParam.doSaturationTail;
const bool needsEmptyTimeBins = needsPrevDigArray || eleParam.doNoiseEmptyPads;
Expand Down
Loading