-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpositionResolution.C
More file actions
81 lines (55 loc) · 5.12 KB
/
positionResolution.C
File metadata and controls
81 lines (55 loc) · 5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
void positionResolution(){
// open files
vector<TFile *> files {new TFile("/pnfs/dune/persistent/TaskForce_AnaTree/ndtf_output/4th_run/ndtf_output_nubar_fgt.dst.root","READ"),new TFile("/pnfs/dune/persistent/TaskForce_AnaTree/ndtf_output/4th_run/ndtf_output_nu_fgt.dst.root","READ"),new TFile("/pnfs/dune/persistent/TaskForce_AnaTree/ndtf_output/4th_run/ndtf_output_nubar_gar.dst.root","READ"),new TFile("/pnfs/dune/persistent/TaskForce_AnaTree/ndtf_output/4th_run/ndtf_output_nu_gar.dst.root","READ")};
//create histograms
vector<TH1F *> differenceX {new TH1F("nubar_fgt_difX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nu_fgt_difX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nubar_gar_difX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nu_gar_difX","trueVtxX-recoVtxX",100,-0.02,1.02)};
vector<TH1F *> divisionX {new TH1F("nubar_fgt_divX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nu_fgt_divX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nubar_gar_divX","trueVtxX-recoVtxX",100,-0.02,1.02), new TH1F("nu_gar_divX","trueVtxX-recoVtxX",100,-0.02,1.02)};
vector<TH1F *> differenceY {new TH1F("nubar_fgt_difY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nu_fgt_difY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nubar_gar_difY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nu_gar_difY","trueVtxY-recoVtxY",100,-0.02,1.02)};
vector<TH1F *> divisionY {new TH1F("nubar_fgt_divY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nu_fgt_divY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nubar_gar_divY","trueVtxY-recoVtxY",100,-0.02,1.02), new TH1F("nu_gar_divY","trueVtxY-recoVtxY",100,-0.02,1.02)};
vector<TH1F *> differenceZ {new TH1F("nubar_fgt_difZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nu_fgt_difZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nubar_gar_difZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nu_gar_difZ","trueVtxZ-recoVtxZ",100,-0.02,1.02)};
vector<TH1F *> divisionZ {new TH1F("nubar_fgt_divZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nu_fgt_divZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nubar_gar_divZ","trueVtxZ-recoVtxZ",100,-0.02,1.02), new TH1F("nu_gar_divZ","trueVtxZ-recoVtxZ",100,-0.02,1.02)};
vector<TH1F *> differenceE {new TH1F("nubar_fgt_difE","Ev-EV_reco",100,0,4), new TH1F("nu_fgt_difE","Ev-EV_reco",100,0,4), new TH1F("nubar_gar_difE","Ev-EV_reco",100,0,4), new TH1F("nu_gar_difE","Ev-EV_reco",100,0,4)};
vector<TH1F *> divisionE {new TH1F("nubar_fgt_divE","Ev-EV_reco",100,0,2), new TH1F("nu_fgt_divE","Ev-EV_reco",100,0,2), new TH1F("nubar_gar_divE","Ev-EV_reco",100,0,2), new TH1F("nu_gar_divE","Ev-EV_reco",100,0,2)};
vector<TH1F *> Test {new TH1F("test_nubar_fgt_divE","Ev-EV_reco",100,0,2), new TH1F("test_nu_fgt_divE","Ev-EV_reco",100,0,2), new TH1F("test_nubar_gar_divE","Ev-EV_reco",100,0,2), new TH1F("test_nu_gar_divE","Ev-EV_reco",100,0,2)};
//create output file
TFile *output = new TFile("/dune/data/users/oneogi/positionResolutionEdgeDistCut.root","RECREATE");
//loop over files
for (size_t i = 0; i < files.size(); i++) {
//Create Readers
TTreeReader reader("dune_dst", files[i]);
TTreeReaderValue<Float_t> Ev(reader, "Ev");
TTreeReaderValue<Float_t> Ev_reco(reader, "Ev_reco");
TTreeReaderValue<Float_t> trueVtxX(reader, "trueVtxX");
TTreeReaderValue<Float_t> recoVtxX(reader, "recoVtxX");
TTreeReaderValue<Float_t> trueVtxY(reader, "trueVtxY");
TTreeReaderValue<Float_t> recoVtxY(reader, "recoVtxY");
TTreeReaderValue<Float_t> trueVtxZ(reader, "trueVtxZ");
TTreeReaderValue<Float_t> recoVtxZ(reader, "recoVtxZ");
TTreeReaderValue<Float_t> trueDistToEdge(reader, "trueDistToEdge");
// cout << "file" << 1 << endl;
//loop over ntuples
while (reader.Next()) {
differenceX[i]->Fill(*trueVtxX - *recoVtxX);
divisionX[i]->Fill(*recoVtxX / *trueVtxX);
differenceY[i]->Fill(*trueVtxY - *recoVtxY);
divisionY[i]->Fill(*recoVtxY / *trueVtxY);
differenceZ[i]->Fill(*trueVtxZ - *recoVtxZ);
divisionZ[i]->Fill(*recoVtxZ / *trueVtxZ);
// float * distCut = 0.015;
// cout << (*Ev.Get() <= 0 || *Ev_reco.Get() <= 0 || *trueDistToEdge.Get() >= distCut) << "\n";
if (!(*Ev <= 0 || *Ev_reco <= 0 || *trueDistToEdge>0.015) {
differenceE[i]->Fill(*Ev - *Ev_reco);
divisionE[i]->Fill(*Ev_reco / *Ev);
}
}
//write to file
differenceX[i]->Write();
divisionX[i]->Write();
differenceY[i]->Write();
divisionY[i]->Write();
differenceZ[i]->Write();
divisionZ[i]->Write();
differenceE[i]->Write();
divisionE[i]->Write();
}
}