Skip to content
Snippets Groups Projects
Commit 01aec069 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Added average number of hits vs eta

parent 0833781b
No related branches found
No related tags found
1 merge request!187Added average number of hits vs eta
...@@ -3,7 +3,7 @@ from Gaudi.Configuration import * ...@@ -3,7 +3,7 @@ from Gaudi.Configuration import *
from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc from Configurables import ApplicationMgr, EICDataSvc, PodioOutput, GeoSvc
from GaudiKernel import SystemOfUnits as units from GaudiKernel import SystemOfUnits as units
detector_name = "topside" detector_name = "athena"
if "JUGGLER_DETECTOR" in os.environ : if "JUGGLER_DETECTOR" in os.environ :
detector_name = str(os.environ["JUGGLER_DETECTOR"]) detector_name = str(os.environ["JUGGLER_DETECTOR"])
...@@ -124,16 +124,14 @@ trk_hit_col = TrackingHitsCollector("trk_hit_col", ...@@ -124,16 +124,14 @@ trk_hit_col = TrackingHitsCollector("trk_hit_col",
str(vtx_b_reco.outputHitCollection), str(vtx_b_reco.outputHitCollection),
str(vtx_ec_reco.outputHitCollection), str(vtx_ec_reco.outputHitCollection),
str(gem_ec_reco.outputHitCollection) ], str(gem_ec_reco.outputHitCollection) ],
trackingHits="trackingHits", trackingHits="trackingHits")
OutputLevel=DEBUG)
algorithms.append( trk_hit_col ) algorithms.append( trk_hit_col )
# Hit Source linker # Hit Source linker
sourcelinker = TrackerSourceLinker("sourcelinker", sourcelinker = TrackerSourceLinker("sourcelinker",
inputHitCollection=trk_hit_col.trackingHits, inputHitCollection=trk_hit_col.trackingHits,
outputSourceLinks="TrackSourceLinks", outputSourceLinks="TrackSourceLinks",
outputMeasurements="TrackMeasurements", outputMeasurements="TrackMeasurements")
OutputLevel=DEBUG)
algorithms.append( sourcelinker ) algorithms.append( sourcelinker )
## Track param init ## Track param init
......
...@@ -19,8 +19,13 @@ using namespace HepMC3; ...@@ -19,8 +19,13 @@ using namespace HepMC3;
void gen_single_tracks(int n_events = 100, void gen_single_tracks(int n_events = 100,
const char* out_fname = "single_tracks.hepmc") const char* out_fname = "single_tracks.hepmc")
{ {
double cos_theta_min = std::cos( 10.0*(M_PI/180.0)); // Throw flat in cos(theta)
double cos_theta_max = std::cos(170.0*(M_PI/180.0)); //double cos_theta_min = std::cos( 2.0*(M_PI/180.0));
//double cos_theta_max = std::cos(178.0*(M_PI/180.0));
// Throw flat in eta
double eta_min = -3.5;
double eta_max = 3.5;
WriterAscii hepmc_output(out_fname); WriterAscii hepmc_output(out_fname);
int events_parsed = 0; int events_parsed = 0;
...@@ -41,13 +46,15 @@ void gen_single_tracks(int n_events = 100, ...@@ -41,13 +46,15 @@ void gen_single_tracks(int n_events = 100,
FourVector(0.0, 0.0, 0.0, 0.938), 2212, 4); FourVector(0.0, 0.0, 0.0, 0.938), 2212, 4);
// Define momentum // Define momentum
Double_t p = r1->Uniform(1.0, 10.0); double p = r1->Uniform(1.0, 10.0);
Double_t phi = r1->Uniform(0.0, 2.0 * M_PI); double phi = r1->Uniform(0.0, 2.0 * M_PI);
Double_t costh = r1->Uniform(cos_theta_min, cos_theta_max); double eta = r1->Uniform(eta_min, eta_max);
Double_t th = std::acos(costh); double th = 2.0*std::atan(std::exp(-eta));
Double_t px = p * std::cos(phi) * std::sin(th); //double costh = r1->Uniform(cos_theta_min, cos_theta_max);
Double_t py = p * std::sin(phi) * std::sin(th); //double th = std::acos(costh);
Double_t pz = p * std::cos(th); double px = p * std::cos(phi) * std::sin(th);
double py = p * std::sin(phi) * std::sin(th);
double pz = p * std::cos(th);
// Generates random vectors, uniformly distributed over the surface of a // Generates random vectors, uniformly distributed over the surface of a
// sphere of given radius, in this case momentum. // sphere of given radius, in this case momentum.
// r1->Sphere(px, py, pz, p); // r1->Sphere(px, py, pz, p);
......
...@@ -14,6 +14,9 @@ R__LOAD_LIBRARY(libDD4pod.so) ...@@ -14,6 +14,9 @@ R__LOAD_LIBRARY(libDD4pod.so)
#include "eicd/ClusterData.h" #include "eicd/ClusterData.h"
#include "eicd/TrackerHitCollection.h" #include "eicd/TrackerHitCollection.h"
#include "common_bench/util.h"
namespace cb = common_bench;
using ROOT::RDataFrame; using ROOT::RDataFrame;
using namespace ROOT::VecOps; using namespace ROOT::VecOps;
...@@ -89,24 +92,20 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root") ...@@ -89,24 +92,20 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root")
.Define("thrownP", fourvec, {"thrownParticles"}) .Define("thrownP", fourvec, {"thrownParticles"})
.Define("p_thrown", momentum, {"thrownP"}) .Define("p_thrown", momentum, {"thrownP"})
.Define("theta_thrown", theta, {"thrownP"}) .Define("theta_thrown", theta, {"thrownP"})
.Define("eta_thrown",cb::eta , {"thrownP"})
.Define("theta0", "theta_thrown[0]") .Define("theta0", "theta_thrown[0]")
.Define("eta0", "eta_thrown[0]")
.Define("nTracks", "outputTrackParameters.size()") .Define("nTracks", "outputTrackParameters.size()")
.Define("p_track", p_track, {"outputTrackParameters"}) .Define("p_track", p_track, {"outputTrackParameters"})
//.Define("p_track1", p_track, {"outputTrackParameters1"})
//.Define("p_track2", p_track, {"outputTrackParameters2"})
.Define("delta_p0",delta_p, {"p_track", "p_thrown"}) .Define("delta_p0",delta_p, {"p_track", "p_thrown"})
//.Define("delta_p1",delta_p, {"p_track1", "p_thrown"})
//.Define("delta_p2",delta_p, {"p_track2", "p_thrown"})
.Define("delta_p_over_p0",delta_p_over_p, {"p_track", "p_thrown"}) .Define("delta_p_over_p0",delta_p_over_p, {"p_track", "p_thrown"})
//.Define("delta_p_over_p1",delta_p_over_p, {"p_track1", "p_thrown"})
//.Define("delta_p_over_p2",delta_p_over_p, {"p_track2", "p_thrown"})
//.Define("N_VtxBarrelHits",[](std::vector<eic::TrackerHitData> hits) { return hits.size();},{"VertexBarrelRecHits"})
.Define("N_Hits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"trackingHits"}) .Define("N_Hits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"trackingHits"})
.Define("N_BarrelHits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"TrackerBarrelRecHits"}) .Define("N_BarrelHits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"TrackerBarrelRecHits"})
.Define("N_EndcapHits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"TrackerEndcapRecHits"}) .Define("N_EndcapHits", [](std::vector<eic::TrackerHitData> hits) { return hits.size();}, {"TrackerEndcapRecHits"})
; ;
auto h_nTracks_vs_theta = df0.Histo2D({"h_nTracks_vs_theta", "; #theta; N tracks ", 40,0,180,10, 0, 10}, "theta0","nTracks"); auto h_nTracks_vs_theta = df0.Histo2D({"h_nTracks_vs_theta", "; #theta; N tracks ", 40,0,180,10, 0, 10}, "theta0","nTracks");
auto h_nTracks_vs_eta = df0.Histo2D({"h_nTracks_vs_eta", "; #eta; N tracks ", 50,-4,4,10, 0, 10}, "eta0","nTracks");
auto h_nTracks = df0.Histo1D({"h_nTracks", "; N tracks ", 10, 0, 10}, "nTracks"); auto h_nTracks = df0.Histo1D({"h_nTracks", "; N tracks ", 10, 0, 10}, "nTracks");
auto h_pTracks = df0.Histo1D({"h_pTracks", "; GeV/c ", 100, 0, 10}, "p_track"); auto h_pTracks = df0.Histo1D({"h_pTracks", "; GeV/c ", 100, 0, 10}, "p_track");
...@@ -120,6 +119,10 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root") ...@@ -120,6 +119,10 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root")
auto hEndcap_N_vs_theta = df0.Histo1D({"hEndcap_N_vs_theta", "; #theta [deg.]", 40, 0, 180 }, "theta0", "N_EndcapHits"); auto hEndcap_N_vs_theta = df0.Histo1D({"hEndcap_N_vs_theta", "; #theta [deg.]", 40, 0, 180 }, "theta0", "N_EndcapHits");
//auto hVtxBarrel_N_vs_theta = df0.Histo1D({"hVtxBarrel_N_vs_theta", "; #theta [deg.]", 20, 0, 180 }, "theta0", "N_VtxBarrelHits"); //auto hVtxBarrel_N_vs_theta = df0.Histo1D({"hVtxBarrel_N_vs_theta", "; #theta [deg.]", 20, 0, 180 }, "theta0", "N_VtxBarrelHits");
auto hNhits_vs_eta = df0.Histo1D({"hNhits_vs_eta", "; #eta ", 50, -4, 4 }, "eta0", "N_Hits");
auto hBarrel_N_vs_eta = df0.Histo1D({"hBarrel_N_vs_eta", "; #eta ", 50, -4, 4 }, "eta0", "N_BarrelHits");
auto hEndcap_N_vs_eta = df0.Histo1D({"hEndcap_N_vs_eta", "; #eta ", 50, -4, 4 }, "eta0", "N_EndcapHits");
auto hHits_Nhits = df0.Histo1D({"hHits_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_Hits"); auto hHits_Nhits = df0.Histo1D({"hHits_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_Hits");
auto hBarrel_Nhits = df0.Histo1D({"hBarrel_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_BarrelHits"); auto hBarrel_Nhits = df0.Histo1D({"hBarrel_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_BarrelHits");
auto hEndcap_Nhits = df0.Histo1D({"hEndcap_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_EndcapHits"); auto hEndcap_Nhits = df0.Histo1D({"hEndcap_Nhits", "; #theta [deg.]", 20, 0, 20 }, "N_EndcapHits");
...@@ -130,6 +133,9 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root") ...@@ -130,6 +133,9 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root")
auto hEndcap_Ntheta = df0.Histo1D({"hEndcap_Ntheta", "; #theta [deg.]", 40, 0, 180 }, "theta0"); auto hEndcap_Ntheta = df0.Histo1D({"hEndcap_Ntheta", "; #theta [deg.]", 40, 0, 180 }, "theta0");
//auto hVtxBarrel_Ntheta = df0.Histo1D({"hVtxBarrel_Ntheta", "; #theta [deg.]", 20, 0, 180 }, "theta0"); //auto hVtxBarrel_Ntheta = df0.Histo1D({"hVtxBarrel_Ntheta", "; #theta [deg.]", 20, 0, 180 }, "theta0");
auto hHits_Neta = df0.Histo1D({"hHits_Neta", "; #eta [deg.]", 50, -4, 4 }, "eta0");
auto hBarrel_Neta = df0.Histo1D({"hBarrel_Neta", "; #eta [deg.]", 50, -4, 4 }, "eta0");
auto hEndcap_Neta = df0.Histo1D({"hEndcap_Neta", "; #eta [deg.]", 50, -4, 4 }, "eta0");
// ----------------------------------------------- // -----------------------------------------------
auto c = new TCanvas(); auto c = new TCanvas();
...@@ -197,6 +203,33 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root") ...@@ -197,6 +203,33 @@ int rec_single_tracks(const char* fname = "topside/rec_single_tracks.root")
c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_theta.png"); c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_theta.png");
c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_theta.pdf"); c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_theta.pdf");
// -----------------------------------------------
c = new TCanvas();
hs = new THStack("n_hits","; #eta ");
h1 = (TH1D*) hBarrel_N_vs_eta->Clone();
h2 = (TH1D*) hBarrel_Neta->Clone();
h1->SetLineColor(4);
h1->Divide(h2);
hs->Add(h1);
h1 = (TH1D*) hEndcap_N_vs_eta->Clone();
h2 = (TH1D*) hEndcap_Neta->Clone();
h1->Divide(h2);
h1->SetLineColor(2);
hs->Add(h1);
h1 = (TH1D*) hNhits_vs_eta->Clone();
h2 = (TH1D*) hHits_Neta->Clone();
h1->Divide(h2);
h1->SetLineColor(1);
hs->Add(h1);
hs->Draw("nostack, hist");
c->BuildLegend();
c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_eta.png");
c->SaveAs("results/track_fitting/rec_single_tracks_n_hits_vs_eta.pdf");
// ----------------------------------------------- // -----------------------------------------------
c = new TCanvas(); c = new TCanvas();
hs = new THStack("theta","; #theta "); hs = new THStack("theta","; #theta ");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment