Skip to content
Merged
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
5 changes: 2 additions & 3 deletions Analyses/src/CaloHitFinderInspect_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "messagefacility/MessageLogger/MessageLogger.h"

#include "Offline/CalorimeterGeom/inc/Calorimeter.hh"
#include "Offline/DataProducts/inc/CaloConst.hh"
#include "Offline/GeometryService/inc/GeomHandle.hh"
#include "Offline/GeometryService/inc/GeometryService.hh"
#include "Offline/GlobalConstantsService/inc/GlobalConstantsHandle.hh"
Expand Down Expand Up @@ -51,7 +52,6 @@ namespace mu2e {

std::string _caloDigiModuleLabel;
std::string _caloShowerSimModuleLabel;
double _digiSampling;
int _minDigiHitLength;

TH1F* _firstAmpOk;
Expand Down Expand Up @@ -82,7 +82,6 @@ namespace mu2e {
art::EDAnalyzer(pset),
_caloDigiModuleLabel (pset.get<std::string> ("caloDigiModuleLabel")),
_caloShowerSimModuleLabel(pset.get<std::string> ("caloShowerSimModuleLabel")),
_digiSampling (pset.get<double> ("digiSampling")),
_minDigiHitLength (pset.get<int> ("minDigiHitLength"))
{}

Expand Down Expand Up @@ -182,7 +181,7 @@ namespace mu2e {
y.clear();
for (int i=0;i<wfsize;++i)
{
x.push_back(t0 + (i+0.5)*_digiSampling);
x.push_back(t0 + (i+0.5)*CaloConst::_digitizationPeriod);
y.push_back(waveform.at(wfindex+i));
}

Expand Down
10 changes: 2 additions & 8 deletions Blinding/src/DisplaceDigiTimes_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

// mu2e
#include "Offline/CaloMC/inc/CaloDigiWrapper.hh"
#include "Offline/DataProducts/inc/CaloConst.hh"
#include "Offline/DataProducts/inc/SurfaceId.hh"
#include "Offline/Mu2eUtilities/inc/BinnedSpectrum.hh"
#include "Offline/RecoDataProducts/inc/CaloDigi.hh"
Expand Down Expand Up @@ -64,11 +65,6 @@ namespace mu2e{
fhicl::Name("SurfaceIds"),
fhicl::Comment("Prioritized sequence of mu2e::SurfaceIds at which tracks may be sampled for reference timing")
};
// would be better for the sampling period to come from conditions
fhicl::Atom<double> calo_adc_sample_period{
fhicl::Name("CaloADCSamplePeriod"),
fhicl::Comment("Sample spacing of calorimeter waveforms")
};
};

using Parameters = art::EDProducer::Table<Config>;
Expand All @@ -81,7 +77,6 @@ namespace mu2e{
art::InputTag _calo_digi_tag;
art::InputTag _kalseed_tag;
SurfaceIdCollection _surface_ids;
double _calo_adc_sample_period;
ProditionsHandle<StrawElectronics> _tracker_conditions_handle;
art::RandomNumberGenerator::base_engine_t& _engine;
BinnedSpectrum _target_distribution;
Expand All @@ -97,7 +92,6 @@ namespace mu2e{
_tracker_digi_tag(config().tracker_digi_tag()),
_calo_digi_tag(config().calo_digi_tag()),
_kalseed_tag(config().kalseed_tag()),
_calo_adc_sample_period(config().calo_adc_sample_period()),
_engine{createEngine(art::ServiceHandle<SeedService>()->getSeed())}{
// initialize target distribution
const auto pset = config().target_distribution.get<fhicl::ParameterSet>();
Expand Down Expand Up @@ -206,7 +200,7 @@ namespace mu2e{
event.put(std::move(adcss));

// apply the shift to calorimeter digis
double sample_period = _calo_adc_sample_period;
double sample_period = CaloConst::_digitizationPeriod;
auto cdigis = std::make_unique<CaloDigiCollection>();
if (0 < cdigi_handle->size()){
for (const auto& old: *cdigi_handle){
Expand Down
11 changes: 5 additions & 6 deletions CaloCluster/src/CaloTrigger_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "Offline/GlobalConstantsService/inc/PhysicsParams.hh"
#include "Offline/RecoDataProducts/inc/CaloDigi.hh"
#include "Offline/RecoDataProducts/inc/CaloTrigSeed.hh"
#include "Offline/DataProducts/inc/CaloConst.hh"

#include <iostream>
#include <string>
Expand Down Expand Up @@ -39,7 +40,6 @@ namespace mu2e {
explicit CaloTrigger(fhicl::ParameterSet const& pset) :
art::EDProducer{pset},
caloDigiModuleLabel_(pset.get<std::string>("caloDigiModuleLabel")),
digiSampling_( pset.get<double>("digiSampling")),
windowPeak_( pset.get<unsigned>("windowPeak")),
minAmp_( pset.get<unsigned>("minAmplitude")),
minSeedAmp_( pset.get<unsigned>("minSeedAmplitude")),
Expand All @@ -66,7 +66,6 @@ namespace mu2e {
private:

std::string caloDigiModuleLabel_;
double digiSampling_;
unsigned windowPeak_;
double minAmp_;
double minSeedAmp_;
Expand Down Expand Up @@ -136,8 +135,8 @@ namespace mu2e {
const Calorimeter* cal = ch.get();
int nro = cal->G4Info().get<int>("nSiPMPerCrystal");

unsigned offsetT0_ = unsigned(blindTime_/digiSampling_);
unsigned nBinTime = unsigned (mbtime_ - blindTime_ + endTimeBuffer_) / digiSampling_;
unsigned offsetT0_ = unsigned(blindTime_/CaloConst::_digitizationPeriod);
unsigned nBinTime = unsigned (mbtime_ - blindTime_ + endTimeBuffer_) / CaloConst::_digitizationPeriod;
unsigned winOffsetT0_ = windowPeak_+offsetT0_ ;

if (hitList_.size() < nBinTime ) hitList_ = std::vector<std::list<FastHit>>(nBinTime,std::list<FastHit>());
Expand Down Expand Up @@ -262,10 +261,10 @@ namespace mu2e {
if (eDep > minEnergy_){
xc /= cluEnergy;
yc /= cluEnergy;
float clutime = (seed->index_+offsetT0_)*digiSampling_-timeCorrection_;
float clutime = (seed->index_+offsetT0_)*CaloConst::_digitizationPeriod-timeCorrection_;

// calorimeter trigger variables
float tpeak = (seed->index_+offsetT0_)*digiSampling_-timeCorrection_;
float tpeak = (seed->index_+offsetT0_)*CaloConst::_digitizationPeriod-timeCorrection_;
// int iSection = cal->crystal(seed->crId_).diskID();

CaloTrigSeed trigseed(idpeak,epeak,tpeak,rpeak,ring1emax,ring1emax2,ring2emax,eDep,clutime,xc,yc);
Expand Down
15 changes: 7 additions & 8 deletions CaloMC/src/CaloDigiMaker_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "Offline/CalorimeterGeom/inc/Calorimeter.hh"
#include "Offline/CaloConditions/inc/CalSimParams.hh"
#include "Offline/DataProducts/inc/CaloConst.hh"
#include "Offline/DataProducts/inc/CaloSiPMId.hh"
#include "Offline/DataProducts/inc/EventWindowMarker.hh"
#include "Offline/DAQConditions/inc/EventTiming.hh"
Expand Down Expand Up @@ -71,9 +72,8 @@ namespace mu2e {
pbtmcTag_ (config().pbtmcTag()),
digitizationStart_ (config().digitizationStart()),
digitizationEnd_ (config().digitizationEnd()),
digiSampling_ (config().pulseCache().digiSampling()),
bufferDigi_ (config().bufferDigi()),
startTimeBuffer_ (config().pulseCache().digiSampling()*config().bufferDigi()),
startTimeBuffer_ (CaloConst::_digitizationPeriod*config().bufferDigi()),
maxADCCounts_ ((1 << config().nBits()) -1),
pulseCache_ (CaloPulseUtil(config().pulseCache())),
nBinsPeak_ (config().nBinsPeak()),
Expand Down Expand Up @@ -116,7 +116,6 @@ namespace mu2e {
float digitizationStart_;
float digitizationEnd_;
float timeFromProtonsToDRMarker_;
float digiSampling_;
unsigned bufferDigi_;
float startTimeBuffer_;
int maxADCCounts_;
Expand Down Expand Up @@ -181,9 +180,9 @@ namespace mu2e {
calorimeter_ = ch.get();

if (calorimeter_->nCrystals()<1 || calorimeter_->G4Info().get<int>("nSiPMPerCrystal")<1) return;
int waveformSize = (digitizationEnd_ - digitizationStart_ + startTimeBuffer_) / digiSampling_;
int waveformSize = (digitizationEnd_ - digitizationStart_ + startTimeBuffer_) / CaloConst::_digitizationPeriod;
if (ewMarker.spillType() != EventWindowMarker::SpillType::onspill) {
waveformSize = (ewMarker.eventLength() - digitizationStart_ + startTimeBuffer_) / digiSampling_;
waveformSize = (ewMarker.eventLength() - digitizationStart_ + startTimeBuffer_) / CaloConst::_digitizationPeriod;
}

int nWaveforms = calorimeter_->nCrystals()*calorimeter_->G4Info().get<int>("nSiPMPerCrystal");
Expand Down Expand Up @@ -267,7 +266,7 @@ namespace mu2e {
for (const auto PEtime : CaloShowerRO.PETime()) {
//PE time is given in DR frame, we need to subtract the event window start and the digi Start time
float time = PEtime + pbtmc.pbtime_- digitizationStart_ + timeFromProtonsToDRMarker_ + startTimeBuffer_;
unsigned startSample = std::max(0u,unsigned(time/digiSampling_));
unsigned startSample = std::max(0u,unsigned(time/CaloConst::_digitizationPeriod));
const auto& pulse = pulseCache_.digitizedPulse(time);
unsigned stopSample = std::min(startSample+pulse.size(), waveform.size());

Expand Down Expand Up @@ -299,7 +298,7 @@ namespace mu2e {
size_t sampleStart = hitStarts[ihit];
size_t sampleStop = hitStops[ihit];
// t0 in digitizer clock ticks, in the digitizer (DR marker) frame, as the DIRAC hit packet reports it
int t0 = int(sampleStart) + std::lround((digitizationStart_ - timeFromProtonsToDRMarker_ - startTimeBuffer_)/digiSampling_);
int t0 = int(sampleStart) + std::lround((digitizationStart_ - timeFromProtonsToDRMarker_ - startTimeBuffer_)/CaloConst::_digitizationPeriod);

std::vector<int> wfsample{};
wfsample.reserve(sampleStop-sampleStart);
Expand All @@ -308,7 +307,7 @@ namespace mu2e {
// only consider hits above digitizationStart
size_t peakPosition(0u);
for (auto i = 0u; i<wfsample.size();++i) {
if ((t0+int(i))*digiSampling_+timeFromProtonsToDRMarker_ >= digitizationStart_ && wfsample[i]>=wfsample[peakPosition]) peakPosition=i;
if ((t0+int(i))*CaloConst::_digitizationPeriod+timeFromProtonsToDRMarker_ >= digitizationStart_ && wfsample[i]>=wfsample[peakPosition]) peakPosition=i;
}
if (diagLevel_ >2) std::cout<<"[CaloDigiMaker] Start=" << sampleStart << " Stop=" << sampleStop
<< " peak in position " << peakPosition << std::endl;
Expand Down
11 changes: 5 additions & 6 deletions CaloMC/src/CaloHitTruthMatch_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "art/Framework/Principal/Event.h"
#include "fhiclcpp/types/Atom.h"

#include "Offline/DataProducts/inc/CaloConst.hh"
#include "Offline/MCDataProducts/inc/CaloEDepMC.hh"
#include "Offline/MCDataProducts/inc/CaloHitMC.hh"
#include "Offline/MCDataProducts/inc/CaloShowerSim.hh"
Expand Down Expand Up @@ -52,7 +53,6 @@ namespace mu2e {
caloHitToken_ {consumes<CaloHitCollection>(config().caloHitCollection())},
ppToken_ {consumes<PrimaryParticle>(config().primaryParticle())},
pulseCache_ (config().pulseCache()),
digiSampling_ (config().pulseCache().digiSampling()),
deltaTimeMinus_ (config().deltaTimeMinus()),
minAmplitude_ (config().minAmplitude()),
fillDetailedMC_ (config().fillDetailedMC()),
Expand All @@ -77,7 +77,6 @@ namespace mu2e {
const art::ProductToken<CaloHitCollection> caloHitToken_;
const art::ProductToken<PrimaryParticle> ppToken_;
CaloPulseUtil::Config pulseCache_;
double digiSampling_;
double deltaTimeMinus_;
double minAmplitude_;
bool fillDetailedMC_;
Expand Down Expand Up @@ -177,13 +176,13 @@ namespace mu2e {
// Maximum time difference for an MC hit to be associated, given the reco hit amplitude and the next reco hit time
std::size_t nbin(wfBinMax_);
while (nbin < wf_.size()) {if (wf_[nbin]*hit.energyDep() < minAmplitude_) break; ++nbin;}
double deltaTimePlus(nbin*digiSampling_);
double deltaTimePlus(nbin*CaloConst::_digitizationPeriod);

if (hitNextIt != sortedHits.end() && (*hitNextIt)->time() - hit.time() - 2*digiSampling_ < deltaTimePlus)
deltaTimePlus = (*hitNextIt)->time() - hit.time() - 2*digiSampling_;
if (hitNextIt != sortedHits.end() && (*hitNextIt)->time() - hit.time() - 2*CaloConst::_digitizationPeriod < deltaTimePlus)
deltaTimePlus = (*hitNextIt)->time() - hit.time() - 2*CaloConst::_digitizationPeriod;

if (diagLevel_ > 2) std::cout<<"[CaloHitTruthMatch] inspect hit id/time/energy/length "<<hit.crystalID()
<<" / "<<hit.time()<<" / "<<hit.energyDep()<<" "<<nbin*digiSampling_<<" "<<deltaTimePlus<<std::endl;
<<" / "<<hit.time()<<" / "<<hit.energyDep()<<" "<<nbin*CaloConst::_digitizationPeriod<<" "<<deltaTimePlus<<std::endl;

// forward to the reco hit time, then loop while the shower time is within the reco window
bool hitIsMatched(false);
Expand Down
3 changes: 0 additions & 3 deletions CaloReco/fcl/common.fcl
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
BEGIN_PROLOG
HitMakerDigitizationStart : 450.
HitMakerDigitizationEnd : 1795
HitMakerDigiSampling : 5
HitMakerMinPeakADC : 16
pulseFileName : "OfflineData/ConditionsService/CsI-waveform-2020-02-12.root"
pulseHistName : "h_waveform"
Expand All @@ -11,7 +10,6 @@ BEGIN_PROLOG
CaloPulseCache:{
fileName : "OfflineData/ConditionsService/CsI-waveform-2020-02-12.root"
histName : "h_waveform"
digiSampling : @local::HitMakerDigiSampling
}

#See doc-db 35519 for noise level discussion
Expand All @@ -25,7 +23,6 @@ BEGIN_PROLOG
elecNphotPerNs : 0.18
rinNphotPerNs : 0.25
darkNphotPerNs : 0.00
digiSampling : @local::HitMakerDigiSampling
}


Expand Down
2 changes: 0 additions & 2 deletions CaloReco/fcl/prolog.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ CaloReco : {
RawProcessor : { @table::CaloReco.RawProcessor }
TemplateProcessor : { @table::CaloReco.TemplateProcessor }
processorStrategy : "TemplateFit"
digiSampling : @local::HitMakerDigiSampling
ProtonBunchTimeTag : "EWMProducer"
UseProtonBunchTime : true
maxChi2Cut : 2.0
Expand All @@ -65,7 +64,6 @@ CaloReco : {
caphriEDepMax : 100
caphriEDepMin : 1
deltaTPulses : 11
digiSampling : 5
nPEperMeV : 30
nSigmaNoise : 4
noiseLevelMeV : 5.5e-1
Expand Down
7 changes: 2 additions & 5 deletions CaloReco/src/CaloHitMakerFast_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ namespace mu2e {
using Comment = fhicl::Comment;
fhicl::Atom<art::InputTag> caloDigiCollection { Name("caloDigiCollection"), Comment("CaloDigi collection name") };
fhicl::Atom<art::InputTag> pbttoken { Name("ProtonBunchTimeTag"), Comment("ProtonBunchTime producer")};
fhicl::Atom<float> digiSampling { Name("digiSampling"), Comment("Digitization time sampling") };
fhicl::Atom<float> deltaTPulses { Name("deltaTPulses"), Comment("Maximum time difference between two signals") };
fhicl::Atom<float> nPEperMeV { Name("nPEperMeV"), Comment("number of photo-electrons per MeV") };
fhicl::Atom<float> noiseLevelMeV { Name("noiseLevelMeV"), Comment("Noise level in MeV") };
Expand All @@ -57,7 +56,6 @@ namespace mu2e {
EDProducer{config},
caloDigisToken_ {consumes<CaloDigiCollection>(config().caloDigiCollection())},
pbttoken_ {consumes<ProtonBunchTime>(config().pbttoken())},
digiSampling_ (config().digiSampling()),
deltaTPulses_ (config().deltaTPulses()),
nPEperMeV_ (config().nPEperMeV()),
noise2_ (config().noiseLevelMeV()*config().noiseLevelMeV()),
Expand All @@ -83,7 +81,6 @@ namespace mu2e {

art::ProductToken<CaloDigiCollection> caloDigisToken_;
const art::ProductToken<ProtonBunchTime> pbttoken_;
float digiSampling_;
float deltaTPulses_;
float nPEperMeV_;
float noise2_;
Expand Down Expand Up @@ -147,8 +144,8 @@ namespace mu2e {
baseline /= nSamPed;

double eDep = (caloDigi.waveform().at(caloDigi.peakpos())-baseline)*ADCToMeV_;//FIXME! we should use the function ::Peak2MeV, I also think that we should: (i) discard the hit if eDep is <0 (noise/stange pulse), (ii) require a minimum pulse length. gianipez
double time = (caloDigi.t0() + caloDigi.peakpos())*digiSampling_ - pbtOffset; //Giani's definition; t0 in ticks
//double time = (caloDigi.t0() + caloDigi.peakpos()+0.5)*digiSampling_ - pbtOffset; //Bertrand's definition
double time = (caloDigi.t0() + caloDigi.peakpos())*CaloConst::_digitizationPeriod - pbtOffset; //Giani's definition; t0 in ticks
//double time = (caloDigi.t0() + caloDigi.peakpos()+0.5)*CaloConst::_digitizationPeriod - pbtOffset; //Bertrand's definition

addPulse(pulseMap, crystalID, time, eDep);
if (diagLevel_ > 2) std::cout<<"[CaloHitMakerFast] extracted Digi with crystalID="<<crystalID<<" eDep="<<eDep<<"\t time=" <<time<<std::endl;
Expand Down
8 changes: 3 additions & 5 deletions CaloReco/src/CaloRecoDigiMaker_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "Offline/CaloReco/inc/CaloTemplateWFProcessor.hh"
#include "Offline/CaloReco/inc/CaloWaveformProcessor.hh"
#include "Offline/DAQConditions/inc/EventTiming.hh"
#include "Offline/DataProducts/inc/CaloConst.hh"
#include "Offline/ProditionsService/inc/ProditionsHandle.hh"
#include "Offline/RecoDataProducts/inc/CaloDigi.hh"
#include "Offline/RecoDataProducts/inc/CaloRecoDigi.hh"
Expand All @@ -36,7 +37,6 @@ class CaloRecoDigiMaker : public art::EDProducer {
fhicl::Atom<art::InputTag> pbtTag { Name("ProtonBunchTimeTag"), Comment("ProtonBunchTime producer") };
fhicl::Atom<bool> usePBT { Name("UseProtonBunchTime"), Comment("Use the proton bunch time for T0") };
fhicl::Atom<std::string> processorStrategy { Name("processorStrategy"), Comment("Digi reco processor name") };
fhicl::Atom<double> digiSampling { Name("digiSampling"), Comment("Calo ADC sampling time (ns)") };
fhicl::Atom<double> maxChi2Cut { Name("maxChi2Cut"), Comment("Chi2 cut for keeping reco digi") };
fhicl::Atom<int> maxPlots { Name("maxPlots"), Comment("Maximum number of waveform plots") };
fhicl::Atom<int> diagLevel { Name("diagLevel"), Comment("Diagnosis level") };
Expand All @@ -49,7 +49,6 @@ class CaloRecoDigiMaker : public art::EDProducer {
pbtTag_ (config().pbtTag()),
usePBT_ (config().usePBT()),
processorStrategy_ (config().processorStrategy()),
digiSampling_ (config().digiSampling()),
maxChi2Cut_ (config().maxChi2Cut()),
maxPlots_ (config().maxPlots()),
diagLevel_ (config().diagLevel()) {
Expand Down Expand Up @@ -90,7 +89,6 @@ class CaloRecoDigiMaker : public art::EDProducer {
bool usePBT_;
art::ProductToken<ProtonBunchTime> pbttoken_;
const std::string processorStrategy_;
double digiSampling_;
double maxChi2Cut_;
int maxPlots_;
int diagLevel_;
Expand Down Expand Up @@ -142,7 +140,7 @@ void CaloRecoDigiMaker::extractRecoDigi(const art::ValidHandle<CaloDigiCollectio
std::vector<double> x{}, y{};
for (const auto& caloDigi : caloDigis) {
int SiPMID = caloDigi.SiPMID();
double t0 = caloDigi.t0() * digiSampling_; // CaloDigi t0 is in digitizer clock ticks
double t0 = caloDigi.t0() * CaloConst::_digitizationPeriod; // CaloDigi t0 is in digitizer clock ticks
double adc2MeV = calCalib.ADC2MeV(SiPMID);

const std::vector<int>& waveform = caloDigi.waveform();
Expand All @@ -153,7 +151,7 @@ void CaloRecoDigiMaker::extractRecoDigi(const art::ValidHandle<CaloDigiCollectio
x.clear();
y.clear();
for (unsigned int i = 0; i < waveform.size(); ++i) {
x.push_back(t0 + (i + 0.5) * digiSampling_); // add 0.5 to be in middle of bin
x.push_back(t0 + (i + 0.5) * CaloConst::_digitizationPeriod); // add 0.5 to be in middle of bin
y.push_back(waveform.at(i));
}

Expand Down
Loading