Skip to content

Commit

Permalink
Merge pull request #496 from knoepfel/geom-iterator-interface
Browse files Browse the repository at this point in the history
Accommodate breaking changes in geometry
  • Loading branch information
mmrosenberg committed Jan 27, 2023
2 parents b432176 + 841233f commit 5da57d0
Show file tree
Hide file tree
Showing 49 changed files with 321 additions and 419 deletions.
64 changes: 32 additions & 32 deletions icaruscode/Analysis/AnalysisTree_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2772,37 +2772,37 @@ double icarus::AnalysisTree::bdist(const recob::tracking::Point_t& pos)
// Get geometry.
art::ServiceHandle<geo::Geometry> geom;

geo::CryostatGeo const& cryo0 = geom->Cryostat(0);
geo::CryostatGeo const& cryo1 = geom->Cryostat(1);
geo::CryostatGeo const& cryo0 = geom->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = geom->Cryostat(geo::CryostatID{1});

geo::TPCGeo const& tpc00 = cryo0.TPC(0);
TVector3 xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00[0] << " " << xyzcenter00[1] << " " << xyzcenter00[2] << std::endl;
geo::Point_t xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00.X() << " " << xyzcenter00.Y() << " " << xyzcenter00.Z() << std::endl;

geo::TPCGeo const& tpc01 = cryo0.TPC(1);
TVector3 xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01[0] << " " << xyzcenter01[1] << " " << xyzcenter01[2] << std::endl;
geo::Point_t xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01.X() << " " << xyzcenter01.Y() << " " << xyzcenter01.Z() << std::endl;

geo::TPCGeo const& tpc10 = cryo1.TPC(0);
TVector3 xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10[0] << " " << xyzcenter10[1] << " " << xyzcenter10[2] << std::endl;
geo::Point_t xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10.X() << " " << xyzcenter10.Y() << " " << xyzcenter10.Z() << std::endl;

geo::TPCGeo const& tpc11 = cryo1.TPC(1);
TVector3 xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11[0] << " " << xyzcenter11[1] << " " << xyzcenter11[2] << std::endl;
geo::Point_t xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11.X() << " " << xyzcenter11.Y() << " " << xyzcenter11.Z() << std::endl;

double h00=tpc00.ActiveHalfHeight();
double w00=tpc00.ActiveHalfWidth();
double l00=tpc00.ActiveLength();
std::cout << h00 << " " << w00 << " " << l00 << std::endl;


double xmin = xyzcenter10[0]-w00;
double xmax = xyzcenter11[0]+w00;
double ymin = xyzcenter00[1]-h00;
double ymax = xyzcenter00[1]+h00;
double zmin = xyzcenter00[2]-l00/2;
double zmax = xyzcenter00[2]+l00/2;
double xmin = xyzcenter10.X()-w00;
double xmax = xyzcenter11.X()+w00;
double ymin = xyzcenter00.Y()-h00;
double ymax = xyzcenter00.Y()+h00;
double zmin = xyzcenter00.Z()-l00/2;
double zmax = xyzcenter00.Z()+l00/2;

double d1; // Distance to right side (wires).
double d2; // Distance to left side (cathode).
Expand Down Expand Up @@ -2842,37 +2842,37 @@ double icarus::AnalysisTree::length(const simb::MCParticle& part, TVector3& star
//double xmin = 0.;


geo::CryostatGeo const& cryo0 = geom->Cryostat(0);
geo::CryostatGeo const& cryo1 = geom->Cryostat(1);
geo::CryostatGeo const& cryo0 = geom->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = geom->Cryostat(geo::CryostatID{1});

geo::TPCGeo const& tpc00 = cryo0.TPC(0);
TVector3 xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00[0] << " " << xyzcenter00[1] << " " << xyzcenter00[2] << std::endl;
geo::Point_t xyzcenter00 = tpc00.GetActiveVolumeCenter();
std::cout << xyzcenter00.X() << " " << xyzcenter00.Y() << " " << xyzcenter00.Z() << std::endl;

geo::TPCGeo const& tpc01 = cryo0.TPC(1);
TVector3 xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01[0] << " " << xyzcenter01[1] << " " << xyzcenter01[2] << std::endl;
geo::Point_t xyzcenter01 = tpc01.GetActiveVolumeCenter();
std::cout << xyzcenter01.X() << " " << xyzcenter01.Y() << " " << xyzcenter01.Z() << std::endl;

geo::TPCGeo const& tpc10 = cryo1.TPC(0);
TVector3 xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10[0] << " " << xyzcenter10[1] << " " << xyzcenter10[2] << std::endl;
geo::Point_t xyzcenter10 = tpc10.GetActiveVolumeCenter();
std::cout << xyzcenter10.X() << " " << xyzcenter10.Y() << " " << xyzcenter10.Z() << std::endl;

geo::TPCGeo const& tpc11 = cryo1.TPC(1);
TVector3 xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11[0] << " " << xyzcenter11[1] << " " << xyzcenter11[2] << std::endl;
geo::Point_t xyzcenter11 = tpc11.GetActiveVolumeCenter();
std::cout << xyzcenter11.X() << " " << xyzcenter11.Y() << " " << xyzcenter11.Z() << std::endl;

double h00=tpc00.ActiveHalfHeight();
double w00=tpc00.ActiveHalfWidth();
double l00=tpc00.ActiveLength();
std::cout << h00 << " " << w00 << " " << l00 << std::endl;


double xmin = xyzcenter10[0]-w00;
double xmax = xyzcenter11[0]+w00;
double ymin = xyzcenter00[1]-h00;
double ymax = xyzcenter00[1]+h00;
double zmin = xyzcenter00[2]-l00/2;
double zmax = xyzcenter00[2]+l00/2;
double xmin = xyzcenter10.X()-w00;
double xmax = xyzcenter11.X()+w00;
double ymin = xyzcenter00.Y()-h00;
double ymax = xyzcenter00.Y()+h00;
double zmin = xyzcenter00.Z()-l00/2;
double zmax = xyzcenter00.Z()+l00/2;
//double vDrift = 160*pow(10,-6);

std::cout << "DET DIMENSIONS: xmin = " << xmin << " xmax = " << xmax << " ymin = " << ymin << " ymax = " << ymax << " zmin = " << zmin << " zmax = " << zmax << std::endl;
Expand Down
2 changes: 1 addition & 1 deletion icaruscode/Analysis/TPCPurityMonitor_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ void TPCPurityMonitor::produce(art::Event& event)
geo::Point_t hitPos = track->LocationAtPoint(trkHitIndex);
geo::Vector_t hitDir = track->DirectionAtPoint(trkHitIndex);
const geo::WireGeo& wireGeo = fGeometry->Wire(hitMetaPair.first->WireID());
geo::Vector_t wireDir(wireGeo.Direction()[0],wireGeo.Direction()[1],wireGeo.Direction()[2]);
geo::Vector_t wireDir = wireGeo.Direction();

pointCloud.emplace_back(hitPos);

Expand Down
27 changes: 14 additions & 13 deletions icaruscode/Analysis/overburden/OBAnaICARUS_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp> // streaming operators etc.


namespace obana {
class OBAnaICARUS;
}
Expand Down Expand Up @@ -118,12 +117,12 @@ class obana::OBAnaICARUS : public art::EDAnalyzer {
double zmin = -894.951;
double zmax = 894.951;

double _x_max; //!< x-max of volume box used to determine whether to save track information
double _x_min; //!< x-min of volume box used to determine whether to save track information
double _y_max; //!< y-max of volume box used to determine whether to save track information
double _y_min; //!< y-min of volume box used to determine whether to save track information
double _z_max; //!< z-max of volume box used to determine whether to save track information
double _z_min; //!< z-min of volume box used to determine whether to save track information
double _x_max{std::numeric_limits<double>::min()}; //!< x-max of volume box used to determine whether to save track information
double _x_min{std::numeric_limits<double>::max()}; //!< x-min of volume box used to determine whether to save track information
double _y_max{std::numeric_limits<double>::min()}; //!< y-max of volume box used to determine whether to save track information
double _y_min{std::numeric_limits<double>::max()}; //!< y-min of volume box used to determine whether to save track information
double _z_max{std::numeric_limits<double>::min()}; //!< z-max of volume box used to determine whether to save track information
double _z_min{std::numeric_limits<double>::max()}; //!< z-max of volume box used to determine whether to save track information

boost::uuids::uuid _uuid; ///< A unique ID to identify different events in files with same event number
std::string _uuid_str; ///< Same as uuid, but converted to string
Expand Down Expand Up @@ -630,12 +629,14 @@ obana::OBAnaICARUS::OBAnaICARUS(fhicl::ParameterSet const& p)

// Iterate over all TPC's to get bounding box that covers volumes of each individual TPC in the detector
art::ServiceHandle<geo::Geometry const> geo;
_x_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinX() < rhs.BoundingBox().MinX();})->MinX();
_y_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinY() < rhs.BoundingBox().MinY();})->MinY();
_z_min = std::min_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MinZ() < rhs.BoundingBox().MinZ();})->MinZ();
_x_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxX() < rhs.BoundingBox().MaxX();})->MaxX();
_y_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxY() < rhs.BoundingBox().MaxY();})->MaxY();
_z_max = std::max_element(geo->begin_TPC(), geo->end_TPC(), [](auto const &lhs, auto const &rhs){ return lhs.BoundingBox().MaxZ() < rhs.BoundingBox().MaxZ();})->MaxZ();
for (auto const& tpc : geo->Iterate<geo::TPCGeo>()) {
_x_min = std::min(_x_min, tpc.BoundingBox().MinX());
_y_min = std::min(_y_min, tpc.BoundingBox().MinY());
_z_min = std::min(_z_min, tpc.BoundingBox().MinZ());
_x_max = std::max(_x_max, tpc.BoundingBox().MaxX());
_y_max = std::max(_y_max, tpc.BoundingBox().MaxY());
_z_max = std::max(_z_max, tpc.BoundingBox().MaxZ());
}

std::cout << "TPC limits: " << std::endl;
std::cout << "\tx_max\t" << _x_max << std::endl;
Expand Down
12 changes: 8 additions & 4 deletions icaruscode/Analysis/tools/BasicHitAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,13 @@ void BasicHitAnalysis::initializeHists(art::ServiceHandle<art::TFileService>& tf

fHitsByWire.resize(fGeometry->Nplanes());

fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", fGeometry->Nwires(0), 0., fGeometry->Nwires(0));
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", fGeometry->Nwires(1), 0., fGeometry->Nwires(1));
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
constexpr geo::TPCID tpcid{0, 0};
auto const n_wires_0 = fGeometry->Nwires(geo::PlaneID{tpcid, 0});
auto const n_wires_1 = fGeometry->Nwires(geo::PlaneID{tpcid, 1});
auto const n_wires_2 = fGeometry->Nwires(geo::PlaneID{tpcid, 2});
fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", n_wires_0, 0., n_wires_0);
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", n_wires_1, 0., n_wires_1);
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", n_wires_2, 0., n_wires_2);

fDriftTimes[0] = dir.make<TH1D>("DriftTime0", ";time(ticks)", 2048, 0., 4096.);
fDriftTimes[1] = dir.make<TH1D>("DriftTime1", ";time(ticks)", 2048, 0., 4096.);
Expand Down Expand Up @@ -267,7 +271,7 @@ void BasicHitAnalysis::initializeHists(art::ServiceHandle<art::TFileService>& tf

fBadWPulseHeight = dir.make<TH1D>("BWPulseHeight", "PH (ADC)", 300, 0., 150.);
fBadWPulseHVsWidth = dir.make<TH2D>("BWPHVsWidth", ";PH;Width", 100, 0., 100., 100, 0., 10.);
fBadWHitsByWire = dir.make<TH1D>("BWHitsByWire", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
fBadWHitsByWire = dir.make<TH1D>("BWHitsByWire", ";Wire #", n_wires_2, 0., n_wires_2);

fSPHvsIdx[0] = dir.make<TH2D>("SPHVsIdx0", ";PH;Idx", 30, 0., 30., 100, 0., 100.);
fSPHvsIdx[1] = dir.make<TH2D>("SPHVsIdx1", ";PH;Idx", 30, 0., 30., 100, 0., 100.);
Expand Down
2 changes: 1 addition & 1 deletion icaruscode/Analysis/tools/BasicRawDigitAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ void BasicRawDigitAnalysis::initializeHists(detinfo::DetectorClocksData const& c
fFullRmsHist[plane] = dir.make<TH1D>(histName.c_str(), ";ADC", 100, 0., 20.);

// Need a channel...
raw::ChannelID_t channel = fGeometry.PlaneWireToChannel(plane,0);
raw::ChannelID_t channel = fGeometry.PlaneWireToChannel(geo::WireID(0, 0, plane, 0));

// Recover the filter from signal shaping services...
const icarusutil::FrequencyVec& response = fSignalServices.GetResponse(channel).getConvKernel();
Expand Down
9 changes: 6 additions & 3 deletions icaruscode/Analysis/tools/BasicTrackAnalysis_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,12 @@ void BasicTrackAnalysis::initializeHists(art::ServiceHandle<art::TFileService>&
// Make a directory for these histograms
art::TFileDirectory dir = tfs->mkdir(dirName.c_str());

fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", fGeometry->Nwires(0), 0., fGeometry->Nwires(0));
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", fGeometry->Nwires(1), 0., fGeometry->Nwires(1));
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", fGeometry->Nwires(2), 0., fGeometry->Nwires(2));
auto const n_wires_0 = fGeometry->Nwires(geo::PlaneID{0, 0, 0});
auto const n_wires_1 = fGeometry->Nwires(geo::PlaneID{0, 0, 1});
auto const n_wires_2 = fGeometry->Nwires(geo::PlaneID{0, 0, 2});
fHitsByWire[0] = dir.make<TH1D>("HitsByWire0", ";Wire #", n_wires_0, 0., n_wires_0);
fHitsByWire[1] = dir.make<TH1D>("HitsByWire1", ";Wire #", n_wires_1, 0., n_wires_1);
fHitsByWire[2] = dir.make<TH1D>("HitsByWire2", ";Wire #", n_wires_2, 0., n_wires_2);

fPulseHVsWidth[0] = dir.make<TH2D>("PHVsWidth0", ";PH;Width", 100, 0., 100., 100, 0., 20.);
fPulseHVsWidth[1] = dir.make<TH2D>("PHVsWidth1", ";PH;Width", 100, 0., 100., 100, 0., 20.);
Expand Down
4 changes: 2 additions & 2 deletions icaruscode/Analysis/trigger/details/CathodeCrossingUtils.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ icarus::CathodeDesc_t icarus::findTPCcathode

return {
findCathodeCenter(*pCryo) // center
, -(pCryo->TPC(0).DriftDir<geo::Vector_t>()) // normal
, -(pCryo->TPC(0).DriftDir()) // normal
};

} // icarus::findTPCcathode()
Expand All @@ -43,7 +43,7 @@ geo::Point_t icarus::findCathodeCenter(geo::CryostatGeo const& cryo) {
geo::vect::MiddlePointAccumulator cathodePos;

for (geo::TPCGeo const& TPC: cryo.IterateTPCs())
cathodePos.add(TPC.GetCathodeCenter<geo::Point_t>());
cathodePos.add(TPC.GetCathodeCenter());

return cathodePos.middlePoint();

Expand Down
8 changes: 4 additions & 4 deletions icaruscode/CRT/CRTAutoVeto_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ void CRTAutoVeto::analyze(art::Event const& ev)

bool CRTAutoVeto::IsAV(TVector3 const& point){

geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(0);
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(1);
geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(geo::CryostatID{1});
geo::TPCGeo const& tpc00 = cryo0.TPC(0);
geo::TPCGeo const& tpc01 = cryo0.TPC(1);
geo::TPCGeo const& tpc10 = cryo1.TPC(0);
Expand All @@ -303,8 +303,8 @@ bool CRTAutoVeto::IsAV(TVector3 const& point){

bool CRTAutoVeto::IsFV(TVector3 const& point) {

geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(0);
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(1);
geo::CryostatGeo const& cryo0 = fGeoService->Cryostat(geo::CryostatID{0});
geo::CryostatGeo const& cryo1 = fGeoService->Cryostat(geo::CryostatID{1});
geo::TPCGeo const& tpc00 = cryo0.TPC(0);
geo::TPCGeo const& tpc01 = cryo0.TPC(1);
geo::TPCGeo const& tpc10 = cryo1.TPC(0);
Expand Down
28 changes: 5 additions & 23 deletions icaruscode/CRT/CRTChannelMapAlg.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ namespace geo {

//----------------------------------------------------------------------------
uint32_t CRTChannelMapAlg::PositionToAuxDetChannel(
double const worldLoc[3],
geo::Point_t const& worldLoc,
std::vector<geo::AuxDetGeo> const& auxDets,
size_t& ad,
size_t& sv) const {
Expand All @@ -248,12 +248,6 @@ namespace geo {
sv = this->NearestSensitiveAuxDet(worldLoc, auxDets, ad);


// Get the origin of the sensitive volume in the world coordinate system
double svOrigin[3] = {0, 0, 0};
double localOrigin[3] = {0, 0, 0};

auxDets[ad].SensitiveVolume(sv).LocalToWorld(localOrigin, svOrigin);
// std::cout <<"ad: " << ad << " ,x: "<< svOrigin[0] << " ,y: " << svOrigin[1] << " ,z: "<< svOrigin[2] << std::endl;
// std::cout << ad << "\t"<< auxDets[ad].TotalVolume()->GetName() << std::endl;
// for (auto& adtoname : fADGeoToName) std::cout << "ad: "<<adtoname.first << " | volname: " << adtoname.second<<std::endl;
// Check to see which AuxDet this position corresponds to
Expand Down Expand Up @@ -294,13 +288,10 @@ namespace geo {
}

//----------------------------------------------------------------------------
const TVector3 CRTChannelMapAlg::AuxDetChannelToPosition(
uint32_t const& channel,
geo::Point_t CRTChannelMapAlg::AuxDetChannelToPosition(
uint32_t const channel,
std::string const& auxDetName,
std::vector<geo::AuxDetGeo> const& auxDets) const {
double x = 0;
double y = 0;
double z = 0;

// Figure out which detector we are in
size_t ad = UINT_MAX;
Expand All @@ -324,23 +315,14 @@ namespace geo {
// Loop over the vector of channel and sensitive volumes to determine the
// sensitive volume for this channel. Then get the origin of the sensitive
// volume in the world coordinate system.
double svOrigin[3] = {0, 0, 0};
double localOrigin[3] = {0, 0, 0};
for (auto csv : csvItr->second) {
if (csv.first == channel) {
// Get the center of the sensitive volume for this channel
auxDets[ad].SensitiveVolume(csv.second).LocalToWorld(localOrigin,
svOrigin);

x = svOrigin[0];
y = svOrigin[1];
z = svOrigin[2];

break;
return auxDets[ad].SensitiveVolume(csv.second).GetCenter();
}
}

return TVector3(x, y, z);
return {};
}

} // namespace crt
Expand Down
6 changes: 3 additions & 3 deletions icaruscode/CRT/CRTChannelMapAlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ namespace geo{
void Uninitialize() override;

uint32_t PositionToAuxDetChannel(
double const worldLoc[3],
geo::Point_t const& worldLoc,
std::vector<geo::AuxDetGeo> const& auxDets,
size_t& ad,
size_t& sv) const override;

const TVector3 AuxDetChannelToPosition(
uint32_t const& channel,
geo::Point_t AuxDetChannelToPosition(
uint32_t channel,
std::string const& auxDetName,
std::vector<geo::AuxDetGeo> const& auxDets) const override;

Expand Down
14 changes: 6 additions & 8 deletions icaruscode/CRT/CRTGeoObjectSorter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,15 @@ namespace geo{
// Define sort order for AuxDets in co-ordinate system

static bool CRTIncreaseX(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
double xyz1[3] = {0.};
double xyz2[3] = {0.};
ad1.GetCenter(xyz1); ad2.GetCenter(xyz2);
return xyz1[0] < xyz2[0];
auto const xyz1 = ad1.GetCenter();
auto const xyz2 = ad2.GetCenter();
return xyz1.X() < xyz2.X();
}

static bool CRTDecreaseY(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
double xyz1[3] = {0.};
double xyz2[3] = {0.};
ad1.GetCenter(xyz1); ad2.GetCenter(xyz2);
return xyz1[1] > xyz2[1];
auto const xyz1 = ad1.GetCenter();
auto const xyz2 = ad2.GetCenter();
return xyz1.Y() > xyz2.Y();
}

static bool CRTIncreaseZ(const AuxDetGeo& ad1, const AuxDetGeo& ad2) {
Expand Down

0 comments on commit 5da57d0

Please sign in to comment.