|
@@ -1,5 +1,6 @@
|
|
|
#include <iostream>
|
|
|
#include <vector>
|
|
|
+#include <map>
|
|
|
#include <utility>
|
|
|
#include <numeric>
|
|
|
#include <limits>
|
|
@@ -19,8 +20,6 @@ using namespace std;
|
|
|
using namespace fv;
|
|
|
using namespace fv::root;
|
|
|
|
|
|
-using namespace std;
|
|
|
-
|
|
|
typedef std::tuple<Seed, PixRecHit, Track, SimHit, SimTrack> MatchedTrack;
|
|
|
typedef std::pair<std::vector<float>,std::vector<float>> pair_vec;
|
|
|
|
|
@@ -30,7 +29,7 @@ typedef std::pair<std::vector<float>,std::vector<float>> pair_vec;
|
|
|
|
|
|
#define PIXEL_BARREL 1
|
|
|
#define PIXEL_ENDCAP 2
|
|
|
-vector<string> subdet_names = {"", "BPIX", "FPIX"};
|
|
|
+std::map<int,string> subdet_names = {{1, "BPIX"}, {2, "FPIX"}};
|
|
|
|
|
|
template<typename A, typename B>
|
|
|
float displacement(const A& a, const B& b){
|
|
@@ -112,12 +111,28 @@ void setup_first_hit_pairs(TrackingDataSet& tds){
|
|
|
return atan2(rec_hit.x, rec_hit.y) - atan2(sim_hit.x, sim_hit.y);
|
|
|
})));
|
|
|
|
|
|
- tds.register_container<ContainerTH1Many<float>>("matched_hits_from_B1", "Matched Hits dPhi - B1",
|
|
|
+ TH1Params params = {"$\\Delta \\phi$(rad)", 50, -0.001, 0.001, ""};
|
|
|
+ tds.register_container<ContainerTH1Many<float>>("dphi_matched_hits_from_B1",
|
|
|
fv::map(calc_dphi, first_hits_in_B1),
|
|
|
- 100, -0.001, 0.001,"dPhi(rad)");
|
|
|
- tds.register_container<ContainerTH1Many<float>>("matched_hits_from_B2", "Matched Hits dPhi - B2",
|
|
|
+ "Matched Hits $\\Delta \\phi$ - B1", params);
|
|
|
+ tds.register_container<ContainerTH1Many<float>>("dphi_matched_hits_from_B2",
|
|
|
fv::map(calc_dphi, first_hits_in_B2),
|
|
|
- 100, -0.001, 0.001,"dPhi(rad)");
|
|
|
+ "Matched Hits $\\Delta \\phi$ - B2", params);
|
|
|
+
|
|
|
+ auto& calc_dz = func<float(HitPair)>("calc_dz",
|
|
|
+ FUNC(([](const HitPair& hit_pair){
|
|
|
+ const auto &rec_hit = std::get<PixRecHit>(hit_pair);
|
|
|
+ const auto &sim_hit = std::get<SimHit>(hit_pair);
|
|
|
+ return rec_hit.z - sim_hit.z;
|
|
|
+ })));
|
|
|
+
|
|
|
+ params = {"$\\Delta z$", 50, -0.01, 0.01, ""};
|
|
|
+ tds.register_container<ContainerTH1Many<float>>("dz_matched_hits_from_B1",
|
|
|
+ fv::map(calc_dz, first_hits_in_B1),
|
|
|
+ "Matched Hits $\\Delta z$ - B1", params);
|
|
|
+ tds.register_container<ContainerTH1Many<float>>("dz_matched_hits_from_B2",
|
|
|
+ fv::map(calc_dz, first_hits_in_B2),
|
|
|
+ "Matched Hits $\\Delta z$ - B2", params);
|
|
|
}
|
|
|
|
|
|
void setup_matched_tracks(TrackingDataSet& tds){
|
|
@@ -211,6 +226,8 @@ void setup_residuals(TrackingDataSet &tds){
|
|
|
}))), matched_tracks);
|
|
|
|
|
|
|
|
|
+ TH2Params params = {"$\\eta$", 100, -4, 4,
|
|
|
+ "Residuals(cm)", 100, 0, .01};
|
|
|
auto& calc_residuals_v_eta = func<pair_vec(vector<MatchedTrack>)>("matched_track_hit_residuals",
|
|
|
FUNC(([](const vector<MatchedTrack>& matched_tracks){
|
|
|
vector<float> residuals;
|
|
@@ -224,31 +241,34 @@ void setup_residuals(TrackingDataSet &tds){
|
|
|
}
|
|
|
return std::make_pair(etas, residuals);
|
|
|
})));
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_all", "Matched Track Residuals - All",
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_all",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B1", "Matched Track Residuals - B1",
|
|
|
+ "Matched Track Residuals - All", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B1",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_B1)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B2", "Matched Track Residuals - B2",
|
|
|
+ "Matched Track Residuals - B1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B2",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_B2)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B3", "Matched Track Residuals - B3",
|
|
|
+ "Matched Track Residuals - B2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B3",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_B3)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B4", "Matched Track Residuals - B4",
|
|
|
+ "Matched Track Residuals - B3", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_B4",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_B4)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F1", "Matched Track Residuals - F1",
|
|
|
+ "Matched Track Residuals - B4", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F1",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_F1)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F2", "Matched Track Residuals - F2",
|
|
|
+ "Matched Track Residuals - F1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F2",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_F2)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F3", "Matched Track Residuals - F3",
|
|
|
+ "Matched Track Residuals - F2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_residuals_v_eta_F3",
|
|
|
fv::apply(calc_residuals_v_eta, fv::tuple(matched_tracks_F3)),
|
|
|
- 100, -4, 4, 100, 0, .01,"Eta","Residuals(cm)");
|
|
|
+ "Matched Track Residuals - F3", params);
|
|
|
+
|
|
|
|
|
|
+ params = {"$\\eta$", 100, -4, 4,
|
|
|
+ "$\\Delta \\phi$(rad)", 100, -.002, .002};
|
|
|
auto& calc_dphi_v_eta = func<pair_vec(vector<MatchedTrack>)>("matched_track_hit_dphis",
|
|
|
FUNC(([](const vector<MatchedTrack>& matched_tracks){
|
|
|
vector<float> dphis;
|
|
@@ -262,30 +282,31 @@ void setup_residuals(TrackingDataSet &tds){
|
|
|
}
|
|
|
return std::make_pair(etas, dphis);
|
|
|
})));
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_all", "Matched Track dphis - All",
|
|
|
+
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_all",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","Residuals(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B1", "Matched Track dphis - B1",
|
|
|
+ "Matched Track $\\Delta \\phi$ - All", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B1",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_B1)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B2", "Matched Track dphis - B2",
|
|
|
+ "Matched Track $\\Delta \\phi$ - B1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B2",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_B2)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B3", "Matched Track dphis - B3",
|
|
|
+ "Matched Track $\\Delta \\phi$ - B2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B3",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_B3)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B4", "Matched Track dphis - B4",
|
|
|
+ "Matched Track $\\Delta \\phi$ - B3", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_B4",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_B4)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F1", "Matched Track dphis - F1",
|
|
|
+ "Matched Track $\\Delta \\phi$ - B4", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F1",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_F1)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F2", "Matched Track dphis - F2",
|
|
|
+ "Matched Track $\\Delta \\phi$ - F1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F2",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_F2)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F3", "Matched Track dphis - F3",
|
|
|
+ "Matched Track $\\Delta \\phi$ - F2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dphis_v_eta_F3",
|
|
|
fv::apply(calc_dphi_v_eta, fv::tuple(matched_tracks_F3)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dphis(rad)");
|
|
|
+ "Matched Track $\\Delta \\phi$ - F3", params);
|
|
|
|
|
|
|
|
|
auto& calc_dz_v_eta = func<pair_vec(vector<MatchedTrack>)>("matched_track_hit_dphis",
|
|
@@ -301,21 +322,25 @@ void setup_residuals(TrackingDataSet &tds){
|
|
|
}
|
|
|
return std::make_pair(etas, dzs);
|
|
|
})));
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_all", "Matched Track dz - All",
|
|
|
+ params = {"$\\eta$", 100, -4, 4,
|
|
|
+ "$\\Delta z$(cm)", 100, -.002, .002};
|
|
|
+
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_all",
|
|
|
fv::apply(calc_dz_v_eta, fv::tuple(matched_tracks)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dz(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B1", "Matched Track dz - B1",
|
|
|
+ "Matched Track $\\Delta z$ - All", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B1",
|
|
|
fv::apply(calc_dz_v_eta, fv::tuple(matched_tracks_B1)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dz(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B2", "Matched Track dz - B2",
|
|
|
+ "Matched Track $\\Delta z$ - B1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B2",
|
|
|
fv::apply(calc_dz_v_eta, fv::tuple(matched_tracks_B2)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dz(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B3", "Matched Track dz - B3",
|
|
|
+ "Matched Track $\\Delta z$ - B2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B3",
|
|
|
fv::apply(calc_dz_v_eta, fv::tuple(matched_tracks_B3)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dz(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B4", "Matched Track dz - B4",
|
|
|
+ "Matched Track $\\Delta z$ - B3", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_dzs_v_eta_B4",
|
|
|
fv::apply(calc_dz_v_eta, fv::tuple(matched_tracks_B4)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dz(cm)");
|
|
|
+ "Matched Track $\\Delta z$ - B4", params);
|
|
|
+
|
|
|
auto& calc_dr_v_eta = func<pair_vec(vector<MatchedTrack>)>("matched_track_hit_drs",
|
|
|
FUNC(([](const vector<MatchedTrack>& matched_tracks){
|
|
|
vector<float> drs;
|
|
@@ -330,17 +355,21 @@ void setup_residuals(TrackingDataSet &tds){
|
|
|
}
|
|
|
return std::make_pair(etas, drs);
|
|
|
})));
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F1", "Matched Track dz - F1",
|
|
|
+ params = {"$\\eta$", 100, -4, 4,
|
|
|
+ "$\\Delta r$(cm)", 100, -.002, .002};
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F1",
|
|
|
fv::apply(calc_dr_v_eta, fv::tuple(matched_tracks_F1)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dr(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F2", "Matched Track dz - F2",
|
|
|
+ "Matched Track $\\Delta r$ - F1", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F2",
|
|
|
fv::apply(calc_dr_v_eta, fv::tuple(matched_tracks_F2)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dr(cm)");
|
|
|
- tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F3", "Matched Track dz - F3",
|
|
|
+ "Matched Track $\\Delta r$ - F2", params);
|
|
|
+ tds.register_container<ContainerTH2Many<float>>("matched_track_drs_v_eta_F3",
|
|
|
fv::apply(calc_dr_v_eta, fv::tuple(matched_tracks_F3)),
|
|
|
- 100, -4, 4, 100, -.002, .002,"Eta","dr(cm)");
|
|
|
+ "Matched Track $\\Delta r$ - F3", params);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
void run_analysis(const vector<fv::util::DataFileDescriptor>& dfds, const string output_filename, bool silent){
|
|
|
gSystem->Load("libfilval.so");
|
|
|
auto replace_suffix = [](const std::string& input, const std::string& new_suffix){
|