14 #include "art_root_io/TFileService.h" 34 #include "TProfile2D.h" 141 const double X0 = 14;
172 tfs->make<TProfile>(
"fShowerProfileSimLong",
173 "longitudinal e- profile (true, simchannel);t;E (MeV)",
178 "fShowerProfileHitLong",
"longitudinal e- profile (true, hit);t;E (MeV)",
LBINS,
LMIN,
LMAX);
180 "fShowerProfileRecoLong",
"longitudinal e- profile (reco);t;Q",
LBINS,
LMIN,
LMAX);
183 "fShowerProfileSimLong2D",
184 "longitudinal e- profile (true, simchannel);t;electron energy (MeV);E (MeV)",
192 tfs->make<TProfile2D>(
"fShowerProfileHitLong2D",
193 "longitudinal e- profile (true, hit);t;electron energy (MeV);E (MeV)",
201 tfs->make<TProfile2D>(
"fShowerProfileRecoLong2D",
202 "longitudinal e- profile (reco);t;electron energy (MeV);Q",
211 tfs->make<TProfile>(
"fShowerProfileSimTrans",
212 "transverse e- profile (true, simchannel);dist (cm);E (MeV)",
217 tfs->make<TProfile>(
"fShowerProfileHitTrans",
218 "transverse e- profile (true, hit);dist (cm);E (MeV)",
223 "fShowerProfileRecoTrans",
"transverse e- profile (reco);dist (cm);Q",
TBINS,
TMIN,
TMAX);
226 "fShowerProfileSimTrans2D",
227 "transverse e- profile (true, simchannel);t;electron energy (MeV);E (MeV)",
235 tfs->make<TProfile2D>(
"fShowerProfileHitTrans2D",
236 "transverse e- profile (true, hit);t;electron energy (MeV);E (MeV)",
244 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D",
245 "transverse e- profile (reco);t;electron energy (MeV);Q",
254 "fShowerProfileSimTrans2D_1",
255 "transverse e- profile [0 <= t < 1] (true, simchannel);t;electron energy (MeV);E (MeV)",
263 "fShowerProfileHitTrans2D_1",
264 "transverse e- profile [0 <= t < 1] (true, hit);t;electron energy (MeV);E (MeV)",
272 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D_1",
273 "transverse e- profile [0 <= t < 1] (reco);t;electron energy (MeV);Q",
282 "fShowerProfileSimTrans2D_2",
283 "transverse e- profile [1 <= t < 2] (true, simchannel);t;electron energy (MeV);E (MeV)",
291 "fShowerProfileHitTrans2D_2",
292 "transverse e- profile [1 <= t < 2] (true, hit);t;electron energy (MeV);E (MeV)",
300 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D_2",
301 "transverse e- profile [1 <= t < 2] (reco);t;electron energy (MeV);Q",
310 "fShowerProfileSimTrans2D_3",
311 "transverse e- profile [2 <= t < 3] (true, simchannel);t;electron energy (MeV);E (MeV)",
319 "fShowerProfileHitTrans2D_3",
320 "transverse e- profile [2 <= t < 3] (true, hit);t;electron energy (MeV);E (MeV)",
328 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D_3",
329 "transverse e- profile [2 <= t < 3] (reco);t;electron energy (MeV);Q",
338 "fShowerProfileSimTrans2D_4",
339 "transverse e- profile [3 <= t < 4] (true, simchannel);t;electron energy (MeV);E (MeV)",
347 "fShowerProfileHitTrans2D_4",
348 "transverse e- profile [3 <= t < 4] (true, hit);t;electron energy (MeV);E (MeV)",
356 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D_4",
357 "transverse e- profile [3 <= t < 4] (reco);t;electron energy (MeV);Q",
366 "fShowerProfileSimTrans2D_5",
367 "transverse e- profile [4 <= t < 5] (true, simchannel);t;electron energy (MeV);E (MeV)",
375 "fShowerProfileHitTrans2D_5",
376 "transverse e- profile [4 <= t < 5] (true, hit);t;electron energy (MeV);E (MeV)",
384 tfs->make<TProfile2D>(
"fShowerProfileRecoTrans2D_5",
385 "transverse e- profile [4 <= t < 5] (reco);t;electron energy (MeV);Q",
394 "longitudinal e- profile;t;electron energy (MeV);Q",
405 "transverse e- profile;dist (cm);electron energy (MeV);Q",
416 tfs->make<TH3F>(
"fTransverse_1",
417 "transverse e- profile [0 <= t < 1];dist (cm);electron energy (MeV);Q",
428 tfs->make<TH3F>(
"fTransverse_2",
429 "transverse e- profile [1 <= t < 2];dist (cm);electron energy (MeV);Q",
440 tfs->make<TH3F>(
"fTransverse_3",
441 "transverse e- profile [2 <= t < 3];dist (cm);electron energy (MeV);Q",
452 tfs->make<TH3F>(
"fTransverse_4",
453 "transverse e- profile [3 <= t < 4];dist (cm);electron energy (MeV);Q",
464 tfs->make<TH3F>(
"fTransverse_5",
465 "transverse e- profile [4 <= t < 5];dist (cm);electron energy (MeV);Q",
478 "fLongitudinal_electron",
"longitudinal e- profile (reco);t;Q",
LBINS,
LMIN,
LMAX);
480 tfs->make<TProfile>(
"fTransverse1_electron",
481 "transverse e- profile [0 <= t < 1] (reco);dist (cm);Q",
486 tfs->make<TProfile>(
"fTransverse2_electron",
487 "transverse e- profile [1 <= t < 2] (reco);dist (cm);Q",
492 tfs->make<TProfile>(
"fTransverse3_electron",
493 "transverse e- profile [2 <= t < 3] (reco);dist (cm);Q",
498 tfs->make<TProfile>(
"fTransverse4_electron",
499 "transverse e- profile [3 <= t < 4] (reco);dist (cm);Q",
504 tfs->make<TProfile>(
"fTransverse5_electron",
505 "transverse e- profile [4 <= t < 5] (reco);dist (cm);Q",
512 "fLongitudinal_photon",
"longitudinal photon profile (reco);t;Q",
LBINS,
LMIN,
LMAX);
514 tfs->make<TProfile>(
"fTransverse1_photon",
515 "transverse photon profile [0 <= t < 1] (reco);dist (cm);Q",
520 tfs->make<TProfile>(
"fTransverse2_photon",
521 "transverse photon profile [1 <= t < 2] (reco);dist (cm);Q",
526 tfs->make<TProfile>(
"fTransverse3_photon",
527 "transverse photon profile [2 <= t < 3] (reco);dist (cm);Q",
532 tfs->make<TProfile>(
"fTransverse4_photon",
533 "transverse photon profile [3 <= t < 4] (reco);dist (cm);Q",
538 tfs->make<TProfile>(
"fTransverse5_photon",
539 "transverse photon profile [4 <= t < 5] (reco);dist (cm);Q",
546 "fLongitudinal_other",
"longitudinal other profile (reco);t;Q",
LBINS,
LMIN,
LMAX);
548 tfs->make<TProfile>(
"fTransverse1_other",
549 "transverse other profile [0 <= t < 1] (reco);dist (cm);Q",
554 tfs->make<TProfile>(
"fTransverse2_other",
555 "transverse other profile [1 <= t < 2] (reco);dist (cm);Q",
560 tfs->make<TProfile>(
"fTransverse3_other",
561 "transverse other profile [2 <= t < 3] (reco);dist (cm);Q",
566 tfs->make<TProfile>(
"fTransverse4_other",
567 "transverse other profile [3 <= t < 4] (reco);dist (cm);Q",
572 tfs->make<TProfile>(
"fTransverse5_other",
573 "transverse other profile [4 <= t < 5] (reco);dist (cm);Q",
586 std::vector<art::Ptr<recob::Hit>> hitlist;
590 std::vector<art::Ptr<sim::SimChannel>> simchanlist;
595 std::vector<art::Ptr<recob::Shower>> showerlist;
600 std::vector<art::Ptr<simb::MCTruth>> mclist;
606 if (
empty(mclist))
return;
609 auto const det_prop =
617 if (showerlist.size()) {
618 std::vector<art::Ptr<recob::Hit>> showerhits = shwfm.at(0);
622 showerlist[0]->ShowerStart(),
642 auto const& collectionPlane = wireReadoutGeom.Plane(collectionPlaneID);
644 double shwVtxTime = detProp.
ConvertXToTicks(shwvtx[0], collectionPlaneID);
646 double shwVtxWire = collectionPlane.WireCoordinate(
toPoint(shwvtx));
648 double shwTwoTime = detProp.
ConvertXToTicks(shwvtx[0] + shwdir[0], collectionPlaneID);
649 double shwTwoWire = collectionPlane.WireCoordinate(
toPoint(shwvtx + shwdir));
654 TH1F* ttemp_1 =
new TH1F(
"ttemp_1",
"ttemp_1",
TBINS,
TMIN,
TMAX);
655 TH1F* ttemp_2 =
new TH1F(
"ttemp_2",
"ttemp_2",
TBINS,
TMIN,
TMAX);
656 TH1F* ttemp_3 =
new TH1F(
"ttemp_3",
"ttemp_3",
TBINS,
TMIN,
TMAX);
657 TH1F* ttemp_4 =
new TH1F(
"ttemp_4",
"ttemp_4",
TBINS,
TMIN,
TMAX);
658 TH1F* ttemp_5 =
new TH1F(
"ttemp_5",
"ttemp_5",
TBINS,
TMIN,
TMAX);
660 for (
size_t i = 0; i < showerhits.size(); ++i) {
661 if (showerhits[i]->
WireID().Plane != collectionPlaneID.Plane)
continue;
663 double wirePitch = wireReadoutGeom.Plane(showerhits[i]->
WireID()).WirePitch();
667 double xvtx = shwVtxTime * tickToDist;
668 double yvtx = shwVtxWire * wirePitch;
670 double xtwo = shwTwoTime * tickToDist;
671 double ytwo = shwTwoWire * wirePitch;
673 double xtwoorth = (ytwo - yvtx) + xvtx;
674 double ytwoorth = -(xtwo - xvtx) + yvtx;
676 double xhit = showerhits[i]->PeakTime() * tickToDist;
677 double yhit = showerhits[i]->WireID().Wire * wirePitch;
679 double ldist =
std::abs((ytwoorth - yvtx) * xhit - (xtwoorth - xvtx) * yhit + xtwoorth * yvtx -
681 std::hypot(ytwoorth - yvtx, xtwoorth - xvtx);
682 double tdist = ((ytwo - yvtx) * xhit - (xtwo - xvtx) * yhit + xtwo * yvtx - ytwo * xvtx) /
683 std::hypot(ytwo - yvtx, xtwo - xvtx);
685 double to3D = 1. / std::hypot(xvtx - xtwo,
689 double t = ldist /
X0;
691 double Q = showerhits[i]->Integral() *
695 ttemp->Fill(tdist, Q);
698 ttemp_1->Fill(tdist, Q);
700 ttemp_2->Fill(tdist, Q);
702 ttemp_3->Fill(tdist, Q);
704 ttemp_4->Fill(tdist, Q);
706 ttemp_5->Fill(tdist, Q);
710 for (
int i = 0; i <
LBINS; ++i) {
711 if (ltemp->GetBinContent(i + 1) == 0)
continue;
714 fLongitudinal->Fill(ltemp->GetBinCenter(i + 1), elep, ltemp->GetBinContent(i + 1));
717 for (
int i = 0; i <
TBINS; ++i) {
718 if (ttemp->GetBinContent(i + 1) == 0)
continue;
721 fTransverse->Fill(ttemp->GetBinCenter(i + 1), elep, ttemp->GetBinContent(i + 1));
724 ttemp_1->GetBinCenter(i + 1), elep, ttemp_1->GetBinContent(i + 1));
726 ttemp_2->GetBinCenter(i + 1), elep, ttemp_2->GetBinContent(i + 1));
728 ttemp_3->GetBinCenter(i + 1), elep, ttemp_3->GetBinContent(i + 1));
730 ttemp_4->GetBinCenter(i + 1), elep, ttemp_4->GetBinContent(i + 1));
732 ttemp_5->GetBinCenter(i + 1), elep, ttemp_5->GetBinContent(i + 1));
734 fTransverse_1->Fill(ttemp_1->GetBinCenter(i + 1), elep, ttemp_1->GetBinContent(i + 1));
735 fTransverse_2->Fill(ttemp_2->GetBinCenter(i + 1), elep, ttemp_2->GetBinContent(i + 1));
736 fTransverse_3->Fill(ttemp_3->GetBinCenter(i + 1), elep, ttemp_3->GetBinContent(i + 1));
737 fTransverse_4->Fill(ttemp_4->GetBinCenter(i + 1), elep, ttemp_4->GetBinContent(i + 1));
738 fTransverse_5->Fill(ttemp_5->GetBinCenter(i + 1), elep, ttemp_5->GetBinContent(i + 1));
751 auto const& collectionPlane = wireReadoutGeom.Plane(collectionPlaneID);
754 std::map<int, double> trkID_E;
759 TH1F* ttemp_1 =
new TH1F(
"ttemp_1",
"ttemp_1",
TBINS,
TMIN,
TMAX);
760 TH1F* ttemp_2 =
new TH1F(
"ttemp_2",
"ttemp_2",
TBINS,
TMIN,
TMAX);
761 TH1F* ttemp_3 =
new TH1F(
"ttemp_3",
"ttemp_3",
TBINS,
TMIN,
TMAX);
762 TH1F* ttemp_4 =
new TH1F(
"ttemp_4",
"ttemp_4",
TBINS,
TMIN,
TMAX);
763 TH1F* ttemp_5 =
new TH1F(
"ttemp_5",
"ttemp_5",
TBINS,
TMIN,
TMAX);
771 double shwvtxT = -999;
772 double shwvtxW = -999;
773 double shwtwoT = -999;
774 double shwtwoW = -999;
776 double shwvtxx = -999;
777 double shwvtxy = -999;
778 double shwtwox = -999;
779 double shwtwoy = -999;
780 double xtwoorth = -999;
781 double ytwoorth = -999;
783 double wirePitch = -999;
784 double tickToDist = -999;
786 bool foundParent =
false;
788 for (
auto const&
hit : allhits) {
789 if (
hit->WireID().Plane != collectionPlaneID.Plane)
continue;
794 for (
size_t j = 0; j < trackIDs.size(); ++j) {
810 shwvtxW = collectionPlane.WireCoordinate(vtx);
814 shwtwoW = collectionPlane.WireCoordinate(vtwo);
816 wirePitch = wireReadoutGeom.Plane(
hit->WireID()).WirePitch();
820 shwvtxx = shwvtxT * tickToDist;
821 shwvtxy = shwvtxW * wirePitch;
823 shwtwox = shwtwoT * tickToDist;
824 shwtwoy = shwtwoW * wirePitch;
826 xtwoorth = (shwtwoy - shwvtxy) + shwvtxx;
827 ytwoorth = -(shwtwox - shwvtxx) + shwvtxy;
831 double xhit =
hit->PeakTime() * tickToDist;
832 double yhit =
hit->WireID().Wire * wirePitch;
834 double ldist =
abs((ytwoorth - shwvtxy) * xhit - (xtwoorth - shwvtxx) * yhit +
835 xtwoorth * shwvtxy - ytwoorth * shwvtxx) /
836 std::hypot(ytwoorth - shwvtxy, xtwoorth - shwvtxx);
837 double tdist = ((shwtwoy - shwvtxy) * xhit - (shwtwox - shwvtxx) * yhit + shwtwox * shwvtxy -
839 std::hypot(shwtwoy - shwvtxy, shwtwox - shwvtxx);
841 double to3D = std::hypot(xvtx - xtwo, yvtx - ytwo, zvtx - ztwo) /
842 std::hypot(shwvtxx - shwtwox,
846 double t = ldist /
X0;
848 double energy = trackIDs[j].energy;
850 ltemp->Fill(t, energy);
851 ttemp->Fill(tdist, energy);
854 ttemp_1->Fill(tdist, energy);
856 ttemp_2->Fill(tdist, energy);
858 ttemp_3->Fill(tdist, energy);
860 ttemp_4->Fill(tdist, energy);
862 ttemp_5->Fill(tdist, energy);
868 for (
int i = 0; i <
LBINS; ++i) {
869 if (ltemp->GetBinContent(i + 1) == 0)
continue;
874 for (
int i = 0; i <
TBINS; ++i) {
875 if (ttemp->GetBinContent(i + 1) == 0)
continue;
880 ttemp_1->GetBinCenter(i + 1), elep, ttemp_1->GetBinContent(i + 1));
882 ttemp_2->GetBinCenter(i + 1), elep, ttemp_2->GetBinContent(i + 1));
884 ttemp_3->GetBinCenter(i + 1), elep, ttemp_3->GetBinContent(i + 1));
886 ttemp_4->GetBinCenter(i + 1), elep, ttemp_4->GetBinContent(i + 1));
888 ttemp_5->GetBinCenter(i + 1), elep, ttemp_5->GetBinContent(i + 1));
901 std::vector<sim::MCEnDep> alledep;
906 TH1F* ttemp_1 =
new TH1F(
"ttemp_1",
"ttemp_1",
TBINS,
TMIN,
TMAX);
907 TH1F* ttemp_2 =
new TH1F(
"ttemp_2",
"ttemp_2",
TBINS,
TMIN,
TMAX);
908 TH1F* ttemp_3 =
new TH1F(
"ttemp_3",
"ttemp_3",
TBINS,
TMIN,
TMAX);
909 TH1F* ttemp_4 =
new TH1F(
"ttemp_4",
"ttemp_4",
TBINS,
TMIN,
TMAX);
910 TH1F* ttemp_5 =
new TH1F(
"ttemp_5",
"ttemp_5",
TBINS,
TMIN,
TMAX);
913 for (
size_t i = 0; i < allchan.size(); ++i) {
915 if (wireReadoutGeom.View(simchan->
Channel()) !=
geo::kV)
continue;
918 for (
auto const& tdc_ide_pair : tdc_ide_map) {
919 for (
auto const& ide : tdc_ide_pair.second) {
928 alledep.push_back(edep);
935 double x0 = electron.
Vx();
936 double y0 = electron.
Vy();
937 double z0 = electron.
Vz();
939 double x2 = electron.
Px();
940 double y2 = electron.
Py();
941 double z2 = electron.
Pz();
943 TVector3 v0(x2, y2, z2);
946 for (
size_t i = 0; i < alledep.size(); ++i) {
947 double x = (double)alledep[i].
Vertex()[0];
948 double y = (double)alledep[i].
Vertex()[1];
949 double z = (double)alledep[i].
Vertex()[2];
951 TVector3 v1(x - x0, y - y0, z - z0);
953 double ldist = v0.Dot(v1);
954 double t = ldist /
X0;
955 double tdist = (v0.Orthogonal()).Dot(v1);
957 double energy = alledep[i].Energy();
959 ltemp->Fill(t, energy);
960 ttemp->Fill(tdist, energy);
963 ttemp_1->Fill(tdist, energy);
965 ttemp_2->Fill(tdist, energy);
967 ttemp_3->Fill(tdist, energy);
969 ttemp_4->Fill(tdist, energy);
971 ttemp_5->Fill(tdist, energy);
974 for (
int i = 0; i <
LBINS; ++i) {
975 if (ltemp->GetBinContent(i + 1) == 0)
continue;
978 ltemp->GetBinCenter(i + 1), electron.
E(), ltemp->GetBinContent(i + 1));
981 for (
int i = 0; i <
TBINS; ++i) {
982 if (ttemp->GetBinContent(i + 1) == 0)
continue;
985 ttemp->GetBinCenter(i + 1), electron.
E(), ttemp->GetBinContent(i + 1));
988 ttemp_1->GetBinCenter(i + 1), electron.
E(), ttemp_1->GetBinContent(i + 1));
990 ttemp_2->GetBinCenter(i + 1), electron.
E(), ttemp_2->GetBinContent(i + 1));
992 ttemp_3->GetBinCenter(i + 1), electron.
E(), ttemp_3->GetBinContent(i + 1));
994 ttemp_4->GetBinCenter(i + 1), electron.
E(), ttemp_4->GetBinContent(i + 1));
996 ttemp_5->GetBinCenter(i + 1), electron.
E(), ttemp_5->GetBinContent(i + 1));
double E(const int i=0) const
TProfile * fTransverse4_photon
TCShowerTemplateMaker(fhicl::ParameterSet const &pset)
const simb::MCNeutrino & GetNeutrino() const
double Py(const int i=0) const
void analyze(const art::Event &evt) override
TProfile2D * fShowerProfileSimTrans2D_5
TProfile * fTransverse3_photon
TProfile * fLongitudinal_photon
const simb::MCParticle * TrackIdToParticle_P(int id) const
TProfile2D * fShowerProfileSimTrans2D_2
Declaration of signal hit object.
const simb::MCParticle & Nu() const
TProfile * fShowerProfileRecoTrans
std::string fHitModuleLabel
The data type to uniquely identify a Plane.
double Px(const int i=0) const
double Temperature() const
In kelvin.
constexpr auto abs(T v)
Returns the absolute value of the argument.
std::string fShowerModuleLabel
TProfile * fLongitudinal_electron
TProfile2D * fShowerProfileHitTrans2D_2
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
void SetTrackId(unsigned int id)
TProfile * fTransverse4_electron
void showerProfile(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> showerhits, TVector3 shwvtx, TVector3 shwdir, double elep)
EDAnalyzer(fhicl::ParameterSet const &pset)
TProfile2D * fShowerProfileSimTrans2D_1
TProfile * fTransverse2_photon
TProfile2D * fShowerProfileHitTrans2D_4
TProfile * fShowerProfileSimLong
TProfile2D * fShowerProfileHitTrans2D_1
Float_t y2[n_points_geant4]
double Efield(unsigned int planegap=0) const
kV/cm
TProfile * fShowerProfileSimTrans
TProfile * fTransverse1_photon
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
TProfile2D * fShowerProfileRecoTrans2D_4
void showerProfileTrue(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> allhits, double elep)
const simb::MCParticle & Lepton() const
#define DEFINE_ART_MODULE(klass)
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
TProfile * fTransverse1_other
std::string fDigitModuleLabel
TProfile2D * fShowerProfileRecoTrans2D_5
void SetVertex(float x, float y, float z)
double ConvertXToTicks(double X, int p, int t, int c) const
TProfile * fTransverse5_other
Point_t toPoint(Point const &p)
Convert the specified point into a geo::Point_t.
double DriftVelocity(double efield=0., double temperature=0.) const
cm/us
TProfile * fLongitudinal_other
TProfile2D * fShowerProfileHitTrans2D_3
TProfile * fShowerProfileRecoLong
TProfile2D * fShowerProfileRecoTrans2D_2
Detector simulation of raw signals on wires.
raw::ChannelID_t Channel() const
Returns the readout channel this object describes.
double Vx(const int i=0) const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
TProfile2D * fShowerProfileSimLong2D
TProfile * fTransverse5_electron
decltype(auto) get(T &&obj)
ADL-aware version of std::to_string.
TProfile2D * fShowerProfileSimTrans2D
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
TProfile * fShowerProfileHitTrans
TProfile * fTransverse3_electron
Encapsulate the construction of a single detector plane .
Contains all timing reference information for the detector.
TProfile * fShowerProfileHitLong
TProfile2D * fShowerProfileRecoTrans2D_3
std::vector< sim::TrackIDE > HitToEveTrackIDEs(detinfo::DetectorClocksData const &clockData, recob::Hit const &hit) const
TProfile2D * fShowerProfileHitTrans2D
double Pz(const int i=0) const
object containing MC truth information necessary for making RawDigits and doing back tracking ...
double Vz(const int i=0) const
TProfile2D * fShowerProfileSimTrans2D_4
TDCIDEs_t const & TDCIDEMap() const
Returns all the deposited energy information as stored.
boost::graph_traits< ModuleGraph >::vertex_descriptor Vertex
TProfile * fTransverse4_other
calo::CalorimetryAlg fCalorimetryAlg
void fill_ptr_vector(std::vector< Ptr< T >> &ptrs, H const &h)
const simb::MCParticle * TrackIdToMotherParticle_P(int id) const
double LifetimeCorrection(detinfo::DetectorClocksData const &clock_data, detinfo::DetectorPropertiesData const &det_prop, double time, double T0=0) const
TProfile2D * fShowerProfileHitLong2D
Float_t x2[n_points_geant4]
TProfile * fTransverse5_photon
TProfile2D * fShowerProfileRecoLong2D
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.
TProfile2D * fShowerProfileRecoTrans2D_1
TProfile * fTransverse3_other
TProfile2D * fShowerProfileRecoTrans2D
TProfile * fTransverse2_electron
TProfile2D * fShowerProfileHitTrans2D_5
double Vy(const int i=0) const
decltype(auto) constexpr empty(T &&obj)
ADL-aware version of std::empty.
TProfile2D * fShowerProfileSimTrans2D_3
TProfile * fTransverse1_electron
std::string fGenieGenModuleLabel
TProfile * fTransverse2_other