Skip to content

Commit 0a27536

Browse files
author
Michael Carrigan
committed
first commit
1 parent 3544f7f commit 0a27536

6 files changed

Lines changed: 283 additions & 3 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include "stage1_run2_icarus.fcl"
2+
3+
message: @local::icarus_message_services_prod
4+
5+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].CalorimetryAlg: @local::icarus_calorimetryalgdata
6+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].ApplyCorrectionsInNorm: true
7+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].NormTools: @local::icarus_calonormtools
8+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].CalorimetryAlg: @local::icarus_calorimetryalgdata
9+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].ApplyCorrectionsInNorm: true
10+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].NormTools: @local::icarus_calonormtools
11+
12+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].CalorimetryAlg: @local::icarus_calorimetryalgdata
13+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].ApplyCorrectionsInNorm: true
14+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].NormTools: @local::icarus_calonormtools
15+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].CalorimetryAlg: @local::icarus_calorimetryalgdata
16+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].ApplyCorrectionsInNorm: true
17+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].NormTools: @local::icarus_calonormtools
18+
19+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[3].ApplyCorrectionsInNorm: true
20+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[3].NormTools: @local::icarus_calonormtools
21+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].ApplyCorrectionsInNorm: true
22+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools: @local::icarus_calonormtools
23+
24+
services.message.destinations :
25+
{
26+
STDCOUT:
27+
{
28+
type: "cout" #tells the message service to output this destination to cout
29+
threshold: "ERROR" #tells the message service that this destination applies to WARNING and higher level messages
30+
categories:
31+
{
32+
Cluster3DICARUS:
33+
{
34+
limit: -1
35+
reportEvery: 1
36+
}
37+
SimDriftElectrons:
38+
{
39+
limit: 0
40+
}
41+
}
42+
}
43+
}
44+
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
#include "mchitmodules.fcl"
2+
#include "mctrutht0matching.fcl"
3+
#include "mcreco.fcl"
4+
#include "backtrackerservice.fcl"
5+
#include "particleinventoryservice.fcl"
6+
#include "stage1_icarus_driver_common.fcl"
7+
8+
process_name: MCstage1p2
9+
10+
# Disabled Space-Charge service for calorimetry
11+
services.SpaceChargeService: {
12+
EnableCalEfieldSCE: false
13+
EnableCalSpatialSCE: false
14+
EnableCorrSCE: false
15+
EnableSimEfieldSCE: false
16+
EnableSimSpatialSCE: false
17+
InputFilename: "SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root"
18+
RepresentationType: "Voxelized_TH3"
19+
service_provider: "SpaceChargeServiceICARUS"
20+
}
21+
22+
services.BackTrackerService: @local::standard_backtrackerservice
23+
# In the 2D-detsim, SimChannel objects are made by the WireCell
24+
# drift simulation (daq), not LArG4 (largeant). Thus, we need
25+
# to overwrite the truth matching labels in the calibration ntuple maker
26+
services.BackTrackerService.BackTracker.SimChannelModuleLabel: "merge"
27+
services.ParticleInventoryService: @local::standard_particleinventoryservice
28+
29+
## Add the MC module to the list of producers
30+
physics.producers: {
31+
@table::icarus_stage1_producers
32+
33+
#mcophit: @local::ICARUSMCOpHit
34+
mcopflashTPC0: @local::ICARUSMCOpFlashTPC0
35+
mcopflashTPC1: @local::ICARUSMCOpFlashTPC1
36+
mcopflashTPC2: @local::ICARUSMCOpFlashTPC2
37+
mcopflashTPC3: @local::ICARUSMCOpFlashTPC3
38+
39+
cheatopflashTPC0: @local::ICARUSCheatOpFlashTPC0
40+
cheatopflashTPC1: @local::ICARUSCheatOpFlashTPC1
41+
cheatopflashTPC2: @local::ICARUSCheatOpFlashTPC2
42+
cheatopflashTPC3: @local::ICARUSCheatOpFlashTPC3
43+
44+
### mc producers
45+
mcreco: @local::standard_mcreco
46+
mchitfinder: @local::standard_mchitfinder
47+
mcassociationsGausCryoE: @local::standard_mcparticlehitmatching
48+
mcassociationsGausCryoW: @local::standard_mcparticlehitmatching
49+
}
50+
51+
physics.reco: [
52+
@sequence::icarus_reco_Gauss2D_CryoE ,
53+
@sequence::icarus_reco_Gauss2D_CryoW ,
54+
@sequence::icarus_reco_fm,
55+
@sequence::icarus_tpcpmtbarycentermatch,
56+
@sequence::icarus_crttrack,
57+
@sequence::icarus_crtt0tagging,
58+
caloskimCalorimetryCryoE, caloskimCalorimetryCryoW,
59+
mcassociationsGausCryoE, mcassociationsGausCryoW,
60+
mcreco
61+
]
62+
63+
physics.outana: [ @sequence::icarus_analysis_modules ]
64+
physics.trigger_paths: [ reco ]
65+
physics.end_paths: [ outana, stream1 ]
66+
outputs.out1.fileName: "%ifb_%tc-%p.root"
67+
outputs.out1.dataTier: "reconstructed"
68+
outputs.out1.outputCommands: [
69+
"keep *_*_*_*",
70+
"drop *_caloskimCalorimetryCryoE_*_*",
71+
"drop *_caloskimCalorimetryCryoW_*_*"
72+
]
73+
74+
source:
75+
{
76+
maxEvents: 10 # Number of events to create
77+
}
78+
79+
#Redefine TPCPMTBarycenterMatch producers with MC parameters
80+
physics.producers.tpcpmtbarycentermatchCryoE: @local::mc_tpcpmtbarycentermatchproducer_east
81+
physics.producers.tpcpmtbarycentermatchCryoW: @local::mc_tpcpmtbarycentermatchproducer_west
82+
83+
# Turn on truth-info for track skimmer
84+
physics.analyzers.caloskimE.G4producer: "largeant"
85+
physics.analyzers.caloskimE.SimChannelproducer: "merge"
86+
physics.analyzers.caloskimE.RawDigitproducers: ["MCDecodeTPCROI:PHYSCRATEDATATPCEW", "MCDecodeTPCROI:PHYSCRATEDATATPCEE"]
87+
physics.analyzers.caloskimE.SelectEvents: [reco]
88+
89+
physics.analyzers.caloskimW.G4producer: "largeant"
90+
physics.analyzers.caloskimW.SimChannelproducer: "merge"
91+
physics.analyzers.caloskimW.RawDigitproducers: ["MCDecodeTPCROI:PHYSCRATEDATATPCWW", "MCDecodeTPCROI:PHYSCRATEDATATPCWE"]
92+
physics.analyzers.caloskimW.SelectEvents: [reco]
93+
94+
physics.producers.mcassociationsGausCryoE.HitParticleAssociations.HitModuleLabelVec: ["cluster3DCryoE"]
95+
physics.producers.mcassociationsGausCryoW.HitParticleAssociations.HitModuleLabelVec: ["cluster3DCryoW"]
96+
97+
# Remove missing products in MC
98+
physics.analyzers.simpleLightAna.TriggerLabel: ""
99+
physics.analyzers.simpleLightAna.RWMLabel: ""
100+
physics.analyzers.simpleLightAna.OpDetWaveformLabels: ["opdaq"]
101+
102+
# Configure mcreco to read SEDLite instead of SED and MCParticleLite in addition to MCParticle
103+
physics.producers.mcreco.G4ModName: @erase
104+
physics.producers.mcreco.SimChannelLabel: "filtersed"
105+
physics.producers.mcreco.MCParticleLabel: "largeant"
106+
physics.producers.mcreco.UseSimEnergyDepositLite: true
107+
physics.producers.mcreco.UseSimEnergyDeposit: false
108+
physics.producers.mcreco.IncludeDroppedParticles: true #this is now true with larsoft v09_89 and newer
109+
physics.producers.mcreco.MCParticleDroppedLabel: "largeant:droppedMCParticles"
110+
physics.producers.mcreco.MCRecoPart.SavePathPDGList: [13,-13,211,-211,111,311,310,130,321,-321,2212,2112,2224,2214,2114,1114,3122,1000010020,1000010030,1000020030,1000020040]
111+
physics.producers.mcreco.MCRecoPart.TrackIDOffsets: [0,10000000,20000000] #Account for track ID offsets in labeling primaries
112+
113+
message: @local::icarus_message_services_prod
114+
115+
#icarus_calonormtoolsTest: [@local::driftnorm_sql, @local::yznorm_sql, @local::tpcgain_sql]
116+
#icarus_calonormtoolsMC: [@local::tpcgain_sql]
117+
118+
runPeriod: 2
119+
120+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].CalorimetryAlg: @local::icarus_calorimetryalgmc
121+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].ApplyCorrectionsInNorm: true
122+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].NormTools: @local::icarus_calonormtoolsMC
123+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].NormTools[0].MC: @local::runPeriod
124+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[7].NormTools[1].MC: @local::runPeriod
125+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].CalorimetryAlg: @local::icarus_calorimetryalgmc
126+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].ApplyCorrectionsInNorm: true
127+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].NormTools: @local::icarus_calonormtoolsMC
128+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].NormTools[0].MC: @local::runPeriod
129+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[7].NormTools[1].MC: @local::runPeriod
130+
131+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].CalorimetryAlg: @local::icarus_calorimetryalgmc
132+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].ApplyCorrectionsInNorm: true
133+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].NormTools: @local::icarus_calonormtoolsMC
134+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].NormTools[0].MC: @local::runPeriod
135+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[5].NormTools[1].MC: @local::runPeriod
136+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].CalorimetryAlg: @local::icarus_calorimetryalgmc
137+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].ApplyCorrectionsInNorm: true
138+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].NormTools: @local::icarus_calonormtoolsMC
139+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].NormTools[0].MC: @local::runPeriod
140+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[5].NormTools[1].MC: @local::runPeriod
141+
142+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[3].ApplyCorrectionsInNorm: true
143+
physics.producers.SBNShowerGausCryoE.ShowerFinderTools[3].NormTools: @local::icarus_calonormtoolsMC
144+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools[0].MC: @local::runPeriod
145+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools[1].MC: @local::runPeriod
146+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].ApplyCorrectionsInNorm: true
147+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools: @local::icarus_calonormtoolsMC
148+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools[0].MC: @local::runPeriod
149+
physics.producers.SBNShowerGausCryoW.ShowerFinderTools[3].NormTools[1].MC: @local::runPeriod
150+
151+
services.message.destinations :
152+
{
153+
STDCOUT:
154+
{
155+
type: "cout" #tells the message service to output this destination to cout
156+
threshold: "ERROR" #tells the message service that this destination applies to WARNING and higher level messages
157+
categories:
158+
{
159+
Cluster3DICARUS:
160+
{
161+
limit: -1
162+
reportEvery: 1
163+
}
164+
SimDriftElectrons:
165+
{
166+
limit: 0
167+
}
168+
}
169+
}
170+
}
171+

icaruscode/TPC/Calorimetry/NormalizeDriftSQLite_tool.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,11 @@ double icarus::calo::NormalizeDriftSQLite::Normalize(double dQdx, const art::Eve
142142
// Get the hit time
143143
double thit = fClockData->TPCTick2TrigTime(hit.PeakTime()) - t0;
144144

145+
//std::cout << "TPC Tick2TrigTime: " << fClockData->TPCTick2TrigTime(hit.PeakTime()) << ", t0: " << t0 << ", hit: " << hit.PeakTime() << std::endl;
146+
145147
if (fVerbose) std::cout << "NormalizeDriftSQLite Tool -- Norm factor: " << exp(thit / thiselifetime) << " at TPC: " << tpc << " Cryo: " << cryo << " Time: " << thit << " Track T0: " << t0 << std::endl;
146148

149+
//std::cout << "dQdx before: " << dQdx << ", dQdx after: " << dQdx*exp(thit / thiselifetime) << ", thit: " << thit << ", lifetime: " << thiselifetime << std::endl;
147150
// Scale
148151
if (thiselifetime > 0) {
149152
dQdx = dQdx*exp(thit / thiselifetime);

icaruscode/TPC/Calorimetry/NormalizeTPCPerPlaneSQL_tool.cc

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class NormalizeTPCPerPlaneSQL : public INormalizeCharge
3939
std::string fDBFileName;
4040
std::string fDBTag;
4141
bool fVerbose;
42+
int fMC;
4243

4344
lariov::DBFolder fDB;
4445

@@ -65,11 +66,15 @@ icarus::calo::NormalizeTPCPerPlaneSQL::NormalizeTPCPerPlaneSQL(fhicl::ParameterS
6566
fDBFileName(pset.get<std::string>("DBFileName")),
6667
fDBTag(pset.get<std::string>("DBTag")),
6768
fVerbose(pset.get<bool>("Verbose", false)),
69+
fMC(pset.get<int>("MC")),
6870
fDB(fDBFileName, "", "", fDBTag, true, false) {}
6971

7072
void icarus::calo::NormalizeTPCPerPlaneSQL::configure(const fhicl::ParameterSet& pset) {}
7173

7274
icarus::calo::NormalizeTPCPerPlaneSQL::ScaleInfo icarus::calo::NormalizeTPCPerPlaneSQL::GetScaleInfo(uint64_t run) {
75+
76+
//std::cout << "NormalizeTPCSQL Tool -- Getting scale info for run: " << run << std::endl;
77+
7378
// check the cache
7479
if (fScaleInfos.count(run)) {
7580
return fScaleInfos.at(run);
@@ -98,8 +103,33 @@ icarus::calo::NormalizeTPCPerPlaneSQL::ScaleInfo icarus::calo::NormalizeTPCPerPl
98103

99104
double icarus::calo::NormalizeTPCPerPlaneSQL::Normalize(double dQdx, const art::Event &e,
100105
const recob::Hit &hit, const geo::Point_t &location, const geo::Vector_t &direction, double t0) {
106+
107+
//std::cout << "NormalizeTPCSQL Tool -- MC Flag: " << fMC << " Run: " << e.id().runID().run() << ", Subrun: " << e.id().subRunID().run() << std::endl;
108+
101109
// Get the info
102-
ScaleInfo i = GetScaleInfo(e.id().runID().run());
110+
uint64_t runID = -1;
111+
switch (fMC) {
112+
case 1:
113+
runID = 8460;
114+
break;
115+
case 2:
116+
runID = 9301;
117+
break;
118+
case 3:
119+
runID = 11806;
120+
break;
121+
case 4:
122+
runID = 12960;
123+
break;
124+
case 5:
125+
runID = 5;
126+
break;
127+
default:
128+
runID = e.id().runID().run();
129+
break;
130+
}
131+
132+
ScaleInfo const& i = GetScaleInfo(runID);
103133

104134
// Lookup the TPC, cryo
105135
unsigned tpc = hit.WireID().TPC;

icaruscode/TPC/Calorimetry/NormalizeYZSQL_tool.cc

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class NormalizeYZSQL : public INormalizeCharge
3939
std::string fDBFileName;
4040
std::string fDBTag;
4141
bool fVerbose;
42+
int fMC;
4243

4344
lariov::DBFolder fDB;
4445

@@ -155,12 +156,15 @@ icarus::calo::NormalizeYZSQL::NormalizeYZSQL(fhicl::ParameterSet const &pset):
155156
fDBFileName(pset.get<std::string>("DBFileName")),
156157
fDBTag(pset.get<std::string>("DBTag")),
157158
fVerbose(pset.get<bool>("Verbose", false)),
159+
fMC(pset.get<int>("MC")),
158160
fDB(fDBFileName, "", "", fDBTag, true, false) {}
159161

160162
void icarus::calo::NormalizeYZSQL::configure(const fhicl::ParameterSet& pset) {}
161163

162164
const icarus::calo::NormalizeYZSQL::ScaleInfo& icarus::calo::NormalizeYZSQL::GetScaleInfo(uint64_t run) {
163165

166+
//std::cout << "NormalizeYZSQL Tool -- Getting scale info for run: " << run << std::endl;
167+
164168
// check the cache
165169
if (fScaleInfos.count(run)) {
166170
return fScaleInfos.at(run);
@@ -230,8 +234,32 @@ const icarus::calo::NormalizeYZSQL::ScaleInfo& icarus::calo::NormalizeYZSQL::Get
230234
double icarus::calo::NormalizeYZSQL::Normalize(double dQdx, const art::Event &e,
231235
const recob::Hit &hit, const geo::Point_t &location, const geo::Vector_t &direction, double t0) {
232236

237+
//std::cout << "NormalizeYZSQL Tool -- MC Flag: " << fMC << " Run: " << e.id().runID().run() << ", Subrun: " << e.id().subRunID().run() << std::endl;
238+
233239
// Get the info
234-
ScaleInfo const& i = GetScaleInfo(e.id().runID().run());
240+
uint64_t runID = -1;
241+
switch (fMC) {
242+
case 1:
243+
runID = 8460;
244+
break;
245+
case 2:
246+
runID = 9301;
247+
break;
248+
case 3:
249+
runID = 11806;
250+
break;
251+
case 4:
252+
runID = 12960;
253+
break;
254+
case 5:
255+
runID = 5;
256+
break;
257+
default:
258+
runID = e.id().runID().run();
259+
break;
260+
}
261+
262+
ScaleInfo const& i = GetScaleInfo(runID);
235263

236264
// plane
237265
int plane = hit.WireID().Plane;

icaruscode/TPC/Calorimetry/normtools_icarus.fcl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ driftnorm_sql: {
3434
tool_type: NormalizeDriftSQLite
3535
DBFileName: tpc_elifetime_data
3636
DBTag: @local::ICARUS_Calibration_GlobalTags.tpc_elifetime_data
37-
Verbose: false
37+
Verbose: true
3838
}
3939

4040
tpcgain_sql: {
4141
tool_type: NormalizeTPCPerPlaneSQL
4242
DBFileName: tpc_dqdxcalibration_allplanes_data
4343
DBTag: @local::ICARUS_Calibration_GlobalTags.tpc_dqdxcalibration_allplanes_data
4444
Verbose: false
45+
MC: -1
4546
}
4647

4748
tpcgain_local: {
@@ -56,11 +57,14 @@ yznorm_sql: {
5657
DBFileName: tpc_yz_correction_allplanes_data
5758
DBTag: @local::ICARUS_Calibration_GlobalTags.tpc_yz_correction_allplanes_data
5859
Verbose: false
60+
MC: -1
5961
}
6062

6163
#icarus_calonormtools: [@local::driftnorm, @local::yznorm, @local::tpcgain]
6264
icarus_calonormtools: [@local::driftnorm_sql, @local::yznorm_sql, @local::tpcgain_sql]
65+
icarus_calonormtoolsMC: [@local::yznorm_sql, @local::tpcgain_sql]
6366

67+
#
6468
# GP 8/4/25 -- Update gain to re-measurement with Run 2 stopping muons and
6569
# fixed recombination.
6670
icarus_data_calconst: [0.016751, 0.012755, 0.012513]

0 commit comments

Comments
 (0)