Skip to content

Commit f89fabd

Browse files
Merge pull request #681 from SBNSoftware/feature/acastill_flash_drift_distance
Feature/acastill flash drift distance
2 parents a32d04b + 79cfd80 commit f89fabd

6 files changed

Lines changed: 109 additions & 18 deletions

File tree

sbndcode/JobConfigurations/standard/reco/reco1_data.fcl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "wcsp_data_sbnd.fcl"
22
#include "opdeconvolution_sbnd_data.fcl"
33
#include "sbnd_ophitfinder_deco_data.fcl"
4+
#include "sbnd_flashfinder_deco_data.fcl"
45
#include "crt_channel_map_service.fcl"
56
#include "crt_calib_service.fcl"
67
#include "standard_reco1_sbnd.fcl"
@@ -23,8 +24,8 @@ physics.producers:
2324
crttracks: @local::crttrackproducer_data_sbnd
2425
opdecopmt: @local::SBNDOpDeconvolutionPMT_data
2526
ophitpmt: @local::SBNDDecoOpHitFinderPMT_data
26-
opflashtpc0: @local::SBNDDecoSimpleFlashTPC0
27-
opflashtpc1: @local::SBNDDecoSimpleFlashTPC1
27+
opflashtpc0: @local::SBNDDecoSimpleFlashTPC0_data
28+
opflashtpc1: @local::SBNDDecoSimpleFlashTPC1_data
2829
}
2930

3031
physics.reco1: [sptpc2d, gaushit, numberofhitsfilter, cluster3d, crtstrips,

sbndcode/OpDetReco/OpDeconvolution/job/run_decohitfinder_data.fcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "sam_sbnd.fcl"
55

66
#include "opdeconvolution_sbnd_data.fcl"
7-
#include "sbnd_flashfinder_deco.fcl"
7+
#include "sbnd_flashfinder_deco_data.fcl"
88
#include "sbnd_ophitfinder_deco_data.fcl"
99

1010
process_name: DecoRecoData
@@ -43,8 +43,8 @@ physics:
4343
{
4444
opdecopmt: @local::SBNDOpDeconvolutionPMT_data
4545
ophitpmt: @local::SBNDDecoOpHitFinderPMT_data
46-
opflashtpc0: @local::SBNDDecoSimpleFlashTPC0
47-
opflashtpc1: @local::SBNDDecoSimpleFlashTPC1
46+
opflashtpc0: @local::SBNDDecoSimpleFlashTPC0_data
47+
opflashtpc1: @local::SBNDDecoSimpleFlashTPC1_data
4848
}
4949

5050
reco: [
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include "sbnd_flashfinder_data.fcl"
2+
3+
BEGIN_PROLOG
4+
5+
####OpFlash finder for PMT deconvolved waveforms#####
6+
###TPC0
7+
SBNDDecoSimpleFlashTPC0_data: @local::SBNDSimpleFlashTPC0_data
8+
SBNDDecoSimpleFlashTPC0_data.PECalib.SPEAreaGain: 200
9+
SBNDDecoSimpleFlashTPC0_data.OpHitProducers: ["ophitpmt"]
10+
SBNDDecoSimpleFlashTPC0_data.OpHitInputTime: "RiseTime"
11+
SBNDDecoSimpleFlashTPC0_data.UseT0Tool: true
12+
SBNDDecoSimpleFlashTPC0_data.ReadoutDelay: 0.135 //cable time delay in us
13+
SBNDDecoSimpleFlashTPC0_data.CorrectLightPropagation: true
14+
SBNDDecoSimpleFlashTPC0_data.DriftEstimatorConfig.CalibrationFile: "OpDetReco/PMTRatioCalibration_data.root"
15+
16+
#TPC1
17+
SBNDDecoSimpleFlashTPC1_data: @local::SBNDSimpleFlashTPC1_data
18+
SBNDDecoSimpleFlashTPC1_data.PECalib.SPEAreaGain: 200
19+
SBNDDecoSimpleFlashTPC1_data.OpHitProducers: ["ophitpmt"]
20+
SBNDDecoSimpleFlashTPC1_data.OpHitInputTime: "RiseTime"
21+
SBNDDecoSimpleFlashTPC1_data.UseT0Tool: true
22+
SBNDDecoSimpleFlashTPC1_data.ReadoutDelay: 0.135 //cable time delay in us
23+
SBNDDecoSimpleFlashTPC1_data.CorrectLightPropagation: true
24+
SBNDDecoSimpleFlashTPC1_data.DriftEstimatorConfig.CalibrationFile: "OpDetReco/PMTRatioCalibration_data.root"
25+
26+
27+
END_PROLOG

sbndcode/OpDetReco/OpFlash/FlashTools/DriftEstimatorPMTRatio_tool.cc

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ namespace lightana
5454
fhicl::Comment("Group velocity for VIS photons")
5555
};
5656

57+
fhicl::Atom<bool> fDataCalibration {
58+
fhicl::Name("DataCalibration"),
59+
fhicl::Comment("Running on data")
60+
};
5761
};
5862

5963
// Default constructor
@@ -79,6 +83,9 @@ namespace lightana
7983
double fVGroupVIS;
8084
double fVGroupVUV_I;
8185

86+
// Whether to use data calibration for drift distance estimation
87+
bool fDataCalibration;
88+
8289
//Geo properties
8390
double fDriftDistance;
8491
double fVISLightPropTime;
@@ -168,28 +175,47 @@ namespace lightana
168175
}
169176
}
170177

178+
double pmtratio=-1.;
171179
// compute PMTRatio metric
172-
double PECoated=0, PEUncoated=0;
173-
for(size_t boxID=0; boxID<fPDSBoxIDs.size(); boxID++){
174-
//we need the uncoated PMT in each window and at least one coated
175-
if( BoxMap_NUncoatedCh[boxID]==1 && BoxMap_NCoatedCh[boxID]>=1){
176-
double CoWeight = 1./BoxMap_NCoatedCh[boxID];
177-
PECoated+=CoWeight * BoxMap_PECoated[boxID];
178-
PEUncoated+=BoxMap_PEUncoated[boxID];
180+
if(fDataCalibration)
181+
{
182+
double TotalPE=0;
183+
double RatioPerBoxWeight=0;
184+
for(size_t boxID=0; boxID<fPDSBoxIDs.size(); boxID++){
185+
double RatioPerBox;
186+
double PECoated=0, PEUncoated=0;
187+
//we need the uncoated PMT in each window and at least one coated
188+
if( BoxMap_NUncoatedCh[boxID]==1 && BoxMap_NCoatedCh[boxID]>=1){
189+
PECoated+= BoxMap_PECoated[boxID];
190+
PEUncoated+=BoxMap_PEUncoated[boxID];
191+
TotalPE += PECoated + PEUncoated;
192+
RatioPerBox = (PEUncoated/PECoated)*BoxMap_NCoatedCh[boxID];
193+
RatioPerBoxWeight += RatioPerBox * (PECoated + PEUncoated);
194+
}
179195
}
196+
if(TotalPE!=0) pmtratio = RatioPerBoxWeight/TotalPE;
197+
}
198+
else{
199+
double PECoated=0, PEUncoated=0;
200+
for(size_t boxID=0; boxID<fPDSBoxIDs.size(); boxID++){
201+
//we need the uncoated PMT in each window and at least one coated
202+
if( BoxMap_NUncoatedCh[boxID]==1 && BoxMap_NCoatedCh[boxID]>=1){
203+
double CoWeight = 1./BoxMap_NCoatedCh[boxID];
204+
PECoated+=CoWeight * BoxMap_PECoated[boxID];
205+
PEUncoated+=BoxMap_PEUncoated[boxID];
206+
}
207+
}
208+
if(PECoated!=0) pmtratio = PEUncoated/PECoated;
180209
}
181210

182-
if(PECoated!=0){
183-
double pmtratio = PEUncoated/PECoated;
184-
211+
if(pmtratio!=-1){
185212
double drift_distance;
186213
if(pmtratio<=fPMTRatioCal[0])
187214
drift_distance=fDriftCal[0];
188215
else if(pmtratio>=fPMTRatioCal[fNCalBins-1])
189216
drift_distance=fDriftCal[fNCalBins-1];
190217
else
191218
drift_distance=Interpolate(pmtratio);
192-
193219
return drift_distance;
194220
}
195221
else return fDriftCal[fNCalBins-1];
@@ -216,11 +242,11 @@ namespace lightana
216242

217243
size_t upix = std::upper_bound(fPMTRatioCal.begin(), fPMTRatioCal.end(), val)-fPMTRatioCal.begin();
218244

219-
double slope = ( fDriftCal[upix]-fDriftCal[upix] ) / ( fPMTRatioCal[upix]-fPMTRatioCal[upix-1] );
245+
double slope = ( fDriftCal[upix]-fDriftCal[upix-1] ) / ( fPMTRatioCal[upix]-fPMTRatioCal[upix-1] );
220246

221247
return fDriftCal[upix-1] + slope * ( val - fPMTRatioCal[upix-1] );
222248
}
223249

224250
}
225251

226-
DEFINE_ART_CLASS_TOOL(lightana::DriftEstimatorPMTRatio)
252+
DEFINE_ART_CLASS_TOOL(lightana::DriftEstimatorPMTRatio)

sbndcode/OpDetReco/OpFlash/job/sbnd_driftestimatoralgo.fcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ DriftEstimatorPMTRatio:
88
CalibrationFile: "OpDetReco/PMTRatioCalibration.root"
99
VGroupVUV: @local::sbnd_vuv_timing_parameterization.vuv_vgroup_mean
1010
VGroupVIS: @local::sbnd_vis_timing_parameterization.vis_vmean
11+
DataCalibration: false
1112
}
1213

1314
END_PROLOG
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include "sbnd_flashalgo.fcl"
2+
#include "sbnd_flashcalib.fcl"
3+
#include "sbnd_flashgeoalgo.fcl"
4+
#include "sbnd_flasht0algo.fcl"
5+
#include "sbnd_driftestimatoralgo.fcl"
6+
7+
BEGIN_PROLOG
8+
9+
SBNDSimpleFlash:
10+
{
11+
module_type : "SBNDFlashFinder"
12+
FlashFinderAlgo : "SimpleFlashAlgo"
13+
AlgoConfig : @local::SimpleFlashStandard
14+
OpHitProducers : ["ophitpmt","ophitarapuca"]
15+
OpFlashProducer : "opflash"
16+
PECalib : @local::NoCalib
17+
OpHitInputTime : "PeakTime"
18+
FlashGeoConfig : @local::FlashGeoThreshold
19+
UseT0Tool : false
20+
FlashT0Config : @local::FlashT0SelectedChannels
21+
ReadoutDelay : 0. //in us
22+
CorrectLightPropagation : false
23+
DriftEstimatorConfig : @local::DriftEstimatorPMTRatio
24+
}
25+
26+
SBNDSimpleFlashTPC0_data: @local::SBNDSimpleFlash
27+
SBNDSimpleFlashTPC0_data.AlgoConfig: @local::SimpleFlashTPC0
28+
SBNDSimpleFlashTPC0_data.DriftEstimatorConfig.tool_type: "DriftEstimatorPMTRatio"
29+
SBNDSimpleFlashTPC0_data.DriftEstimatorConfig.DataCalibration: true
30+
31+
SBNDSimpleFlashTPC1_data: @local::SBNDSimpleFlash
32+
SBNDSimpleFlashTPC1_data.AlgoConfig: @local::SimpleFlashTPC1
33+
SBNDSimpleFlashTPC1_data.DriftEstimatorConfig.tool_type: "DriftEstimatorPMTRatio"
34+
SBNDSimpleFlashTPC1_data.DriftEstimatorConfig.DataCalibration: true
35+
36+
END_PROLOG

0 commit comments

Comments
 (0)