From a349635a61fd158c1c9dbd3802fc2cb14bcdce5a Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Mon, 23 Aug 2021 01:41:52 -0500 Subject: [PATCH] Adding comparison for conformal finding modified: benchmarks/track_finding/multiple_tracks.sh modified: benchmarks/track_finding/options/track_reconstruction.py modified: benchmarks/track_finding/scripts/gen_multiple_tracks.cxx modified: benchmarks/track_finding/scripts/rec_multiple_tracks.cxx --- benchmarks/track_finding/multiple_tracks.sh | 42 +++++++++---------- .../options/track_reconstruction.py | 11 ++++- .../scripts/gen_multiple_tracks.cxx | 2 +- .../scripts/rec_multiple_tracks.cxx | 10 +++++ 4 files changed, 42 insertions(+), 23 deletions(-) diff --git a/benchmarks/track_finding/multiple_tracks.sh b/benchmarks/track_finding/multiple_tracks.sh index 85df9ebc..096d0733 100644 --- a/benchmarks/track_finding/multiple_tracks.sh +++ b/benchmarks/track_finding/multiple_tracks.sh @@ -54,33 +54,33 @@ export JUGGLER_REC_FILE="rec_${JUGGLER_FILE_NAME_TAG}.root" echo "JUGGLER_N_EVENTS = ${JUGGLER_N_EVENTS}" echo "JUGGLER_DETECTOR = ${JUGGLER_DETECTOR}" -## generate the input events -root -b -q "benchmarks/track_finding/scripts/gen_multiple_tracks.cxx(${JUGGLER_N_EVENTS}, \"${JUGGLER_FILE_NAME_TAG}.hepmc\")" -if [[ "$?" -ne "0" ]] ; then - echo "ERROR running script" - exit 1 -fi - -echo "Running geant4 simulation" -## run geant4 simulations -npsim --runType batch \ - --part.minimalKineticEnergy 1000*GeV \ - -v WARNING \ - --numberOfEvents ${JUGGLER_N_EVENTS} \ - --compactFile ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml \ - --inputFiles ${JUGGLER_FILE_NAME_TAG}.hepmc \ - --outputFile ${JUGGLER_SIM_FILE} -if [[ "$?" -ne "0" ]] ; then - echo "ERROR running script" - exit 1 -fi +### generate the input events +#root -b -q "benchmarks/track_finding/scripts/gen_multiple_tracks.cxx(${JUGGLER_N_EVENTS}, \"${JUGGLER_FILE_NAME_TAG}.hepmc\")" +#if [[ "$?" -ne "0" ]] ; then +# echo "ERROR running script" +# exit 1 +#fi +# +#echo "Running geant4 simulation" +### run geant4 simulations +#npsim --runType batch \ +# --part.minimalKineticEnergy 1000*GeV \ +# -v WARNING \ +# --numberOfEvents ${JUGGLER_N_EVENTS} \ +# --compactFile ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml \ +# --inputFiles ${JUGGLER_FILE_NAME_TAG}.hepmc \ +# --outputFile ${JUGGLER_SIM_FILE} +#if [[ "$?" -ne "0" ]] ; then +# echo "ERROR running script" +# exit 1 +#fi rootls -t ${JUGGLER_SIM_FILE} if [[ -z "${ANALYSIS_ONLY}" ]] ; then # Need to figure out how to pass file name to juggler from the commandline - gaudirun.py benchmarks/tracking/options/track_reconstruction.py + xenv -x ${JUGGLER_INSTALL_PREFIX}/Juggler.xenv gaudirun.py benchmarks/track_finding/options/track_reconstruction.py if [[ "$?" -ne "0" ]] ; then echo "ERROR running juggler" exit 1 diff --git a/benchmarks/track_finding/options/track_reconstruction.py b/benchmarks/track_finding/options/track_reconstruction.py index b657a008..328c0e0b 100644 --- a/benchmarks/track_finding/options/track_reconstruction.py +++ b/benchmarks/track_finding/options/track_reconstruction.py @@ -38,6 +38,7 @@ from Configurables import Jug__Reco__TrackParamTruthInit as TrackParamTruthInit from Configurables import Jug__Reco__TrackParamClusterInit as TrackParamClusterInit from Configurables import Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit +from Configurables import Jug__Reco__ConformalXYPeakProtoTracks as ConformalXYPeakProtoTracks from Configurables import Jug__Reco__TrackFindingAlgorithm as TrackFindingAlgorithm from Configurables import Jug__Reco__ParticlesFromTrackFit as ParticlesFromTrackFit from Configurables import Jug__Reco__EMCalReconstruction as EMCalReconstruction @@ -48,7 +49,7 @@ from Configurables import Jug__Reco__SimpleClustering as SimpleClustering algorithms = [ ] podioinput = PodioInput("PodioReader", - collections=["mcparticles","TrackerEndcapHits","TrackerBarrelHits","VertexBarrelHits","VertexEndcapHits","GEMTrackerEndcapHits"])#, OutputLevel=DEBUG) + collections=["mcparticles","TrackerEndcapHits","TrackerBarrelHits","VertexBarrelHits","VertexEndcapHits","GEMTrackerEndcapHits"]) algorithms.append( podioinput ) ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection. @@ -128,6 +129,14 @@ trk_hit_col = TrackingHitsCollector("trk_hit_col", OutputLevel=DEBUG) algorithms.append( trk_hit_col ) +# Hit Source linker +conformal_find = ConformalXYPeakProtoTracks("conformal_find", + inputTrackerHits=trk_hit_col.trackingHits, + outputProtoTracks="outputProtoTracks", + nProtoTracks="nProtoTracks", + OutputLevel=DEBUG) +algorithms.append( conformal_find ) + # Hit Source linker sourcelinker = TrackerSourceLinker("sourcelinker", inputHitCollection=trk_hit_col.trackingHits, diff --git a/benchmarks/track_finding/scripts/gen_multiple_tracks.cxx b/benchmarks/track_finding/scripts/gen_multiple_tracks.cxx index a9c0999f..8596e929 100644 --- a/benchmarks/track_finding/scripts/gen_multiple_tracks.cxx +++ b/benchmarks/track_finding/scripts/gen_multiple_tracks.cxx @@ -19,7 +19,7 @@ using namespace HepMC3; */ void gen_multiple_tracks(int n_events = 100, const char* out_fname = "multiple_tracks.hepmc", - int n_parts = 2) + int n_parts = 5) { double cos_theta_min = std::cos( 10.0*(M_PI/180.0)); double cos_theta_max = std::cos(170.0*(M_PI/180.0)); diff --git a/benchmarks/track_finding/scripts/rec_multiple_tracks.cxx b/benchmarks/track_finding/scripts/rec_multiple_tracks.cxx index f66932cd..fdd02666 100644 --- a/benchmarks/track_finding/scripts/rec_multiple_tracks.cxx +++ b/benchmarks/track_finding/scripts/rec_multiple_tracks.cxx @@ -87,6 +87,7 @@ int rec_multiple_tracks(const char* fname = "topside/rec_multiple_tracks.root") auto df0 = df.Define("isThrown", "mcparticles2.genStatus == 1") .Define("thrownParticles", "mcparticles2[isThrown]") .Define("thrownP", fourvec, {"thrownParticles"}) + .Define("nThrown", "thrownParticles.size()") .Define("p_thrown", momentum, {"thrownP"}) .Define("theta_thrown", theta, {"thrownP"}) .Define("theta0", "theta_thrown[0]") @@ -106,6 +107,9 @@ int rec_multiple_tracks(const char* fname = "topside/rec_multiple_tracks.root") auto h_delta_p0 = df0.Histo1D({"h_delta_p0", "Truth Track Init; GeV/c ", 100, -10, 10}, "delta_p0"); + auto h_nProtoTracks = df0.Histo1D({"h_nProtoTracks", "; n ", 10, 0, 10}, "nProtoTracks"); + auto h_nThrown = df0.Histo1D({"h_nThrown", "; n ", 10, 0, 10}, "nThrown"); + auto h_delta_p0_over_p = df0.Histo1D({"h_delta_p0_over_p", "Truth Track Init; delta p/p ", 100, -0.1, 0.1}, "delta_p_over_p0"); auto hNhits_vs_theta = df0.Histo1D({"hNhits_vs_theta", "; #theta [deg.]", 40, 0, 180 }, "theta0", "N_Hits"); @@ -123,6 +127,12 @@ int rec_multiple_tracks(const char* fname = "topside/rec_multiple_tracks.root") // ----------------------------------------------- auto c = new TCanvas(); + h_nThrown->SetLineColor(2); + h_nThrown->DrawCopy(); + h_nProtoTracks->DrawCopy("same"); + c->SaveAs("results/track_finding/rec_multiple_tracks_nProtoTracks.png"); + c->SaveAs("results/track_finding/rec_multiple_tracks_nProtoTracks.pdf"); + h_nTracks->DrawCopy(); c->SaveAs("results/track_finding/rec_multiple_tracks_nTracks.png"); c->SaveAs("results/track_finding/rec_multiple_tracks_nTracks.pdf"); -- GitLab