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
Branches
Tags
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