protodune xyz calibration service
play

ProtoDUNE XYZ Calibration Service Jonathan Paley ProtoDUNE - PowerPoint PPT Presentation

ProtoDUNE XYZ Calibration Service Jonathan Paley ProtoDUNE Sim/Reco Meeting August 15, 2018 Jonathan M. Paley 1 XYZ Calibrations Plane 1 X Correction Plane 1 Negative X Correction 600 2 1.2 Y Coordinate (cm) Correction 500 1 1.5


  1. ProtoDUNE XYZ Calibration Service Jonathan Paley ProtoDUNE Sim/Reco Meeting August 15, 2018 Jonathan M. Paley � 1

  2. XYZ Calibrations Plane 1 X Correction Plane 1 Negative X Correction 600 2 1.2 Y Coordinate (cm) Correction 500 1 1.5 400 0.8 0.6 300 1 0.4 200 0.5 0.2 100 0 0 0 200 0 200 0 200 400 600 − X Coordinate (cm) Z Coordinate (cm) • Corrections are to be applied to hits as a function of (x,y,z). Calibration constants provided to me by Ajib Paudel. • There are also overall “normalization” corrections that need to be applied, determined for each plane. Jonathan M. Paley � 2

  3. XYZ Calibrations - Database Implementation • The contents of the histograms and the normalization corrections have been pushed to the calibration conditions database. • Currently, the condb is not set up to store “arrays” of data (experts are considering how to implement this). So the individual (plane,[“side”],bins) are stored as channel numbers. • The validity time for the MC constants from Ajib is set to “0”. In the future, when we have constants derived from data, I recommend we use the first run number of the data set used to derive the constants. • Constants are written to a .csv file (of a particular format), and then we use the “writeConditionsCSVToDB” utility in nutools (part of larsoft) to push to the database. • Write permissions to the database are limited to those who will be responsible for maintaining their tables. Please contact me if you have a table you want to write to. Jonathan M. Paley � 3

  4. XYZ Calibrations - Offline Interface • Added two new packages to dunetpc: dune/Calib (contains the data providers) and dune/CalibServices (contains the art services that provide pointers to the data providers). • Data provider class: class XYZCalibProtoDUNE : public XYZCalib { void SetIsMC(bool v) { fIsMC = v; } void SetNormCorr(int plane, double val); public: void SetXCorr(int plane, double x, double dx, double val); XYZCalibProtoDUNE(); void SetYZCorr(int plane, int side, double y, XYZCalibProtoDUNE(fhicl::ParameterSet const& pset); double dx, double val); XYZCalibProtoDUNE(XYZCalibProtoDUNE const&) = delete; void SetUseCondb(bool v) { fUseCondbXYZCorr = v; virtual ~XYZCalibProtoDUNE() = default; } void SetXCorrFileName(std::string f) bool Configure(fhicl::ParameterSet const& pset); { fXCorrFileName=f; } bool Update(uint64_t ts=0); void SetYZCorrFileName(std::string f) { fYZCorrFileName=f; } virtual double GetNormCorr(int plane) override; void SetNormCorrFileName(std::string f) virtual double GetXCorr(int plane, double x) override; { fNormCorrFileName=f; } virtual double GetYZCorr(int plane, int side, double y, double z) override; void SetInterpolate(bool v) { fInterpolate = v; } 0 is negative, 1 is positive Jonathan M. Paley � 4

  5. XYZ Calibrations - Offline Interface • Added two new packages to dunetpc: dune/Calib (contains the data providers) and dune/CalibServices (contains the art services that provide pointers to the data providers). • Data provider class: • Can be used outside of art. void SetIsMC(bool v) { fIsMC = v; } Simply instantiate the object, and void SetNormCorr(int plane, double val); void SetXCorr(int plane, double x, double dx, call the appropriate methods to double val); configure and load the void SetYZCorr(int plane, int side, double y, double dx, double val); constants. void SetUseCondb(bool v) { fUseCondbXYZCorr = v; } • Always set the data “type” (data void SetXCorrFileName(std::string f) { fXCorrFileName=f; } vs. mc) via the SetIsMC method. void SetYZCorrFileName(std::string f) • Corrections are stored as Root { fYZCorrFileName=f; } void SetNormCorrFileName(std::string f) histograms, there is an option to { fNormCorrFileName=f; } use the Interpolate method. void SetInterpolate(bool v) { fInterpolate = v; } Default is to return the value of the bin. Jonathan M. Paley � 5

  6. XYZ Calibrations - art Service • Added two new packages to dunetpc: dune/Calib (contains the data providers) and dune/CalibServices (contains the art services that provide pointers to the data providers). • Data provider class: • Can read from an void SetIsMC(bool v) { fIsMC = v; } independent .csv file if you don’t void SetNormCorr(int plane, double val); void SetXCorr(int plane, double x, double dx, want to rely on the database. double val); • Can also override specific void SetYZCorr(int plane, int side, double y, double dx, double val); values, but this should only be void SetUseCondb(bool v) { fUseCondbXYZCorr = v; } done by experts. void SetXCorrFileName(std::string f) { fXCorrFileName=f; } void SetYZCorrFileName(std::string f) { fYZCorrFileName=f; } void SetNormCorrFileName(std::string f) { fNormCorrFileName=f; } void SetInterpolate(bool v) { fInterpolate = v; } Jonathan M. Paley � 6

  7. XYZ Calibrations - art Service • Added two new packages to dunetpc: dune/Calib (contains the data providers) and dune/CalibServices (contains the art services that provide pointers to the data providers). • Service class: BEGIN_PROLOG • Standard approach of simply protodune_xyzcalib : providing pointer to the data { service_provider: "XYZCalibServiceProtoDUNE" provider class, and calling UseCondbXYZCorr: true “Update” at “preBeginRun”. Interpolate: false • Defaults are to use the constants XCorrFileName: "" in the database, and to not YZCorrFileName: "" NormCorrFileName: "" interpolate (Tingjun reported XCorrDBTag: "" non-negligible performance cost YZCorrDBTag: "" when interpolating). NormCorrDBTag: "" } END_PROLOG Jonathan M. Paley � 7

Recommend


More recommend