"README.md" did not exist on "12853982a639e5aca753f519a4b6530d8944826f"
Newer
Older
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "TROOT.h"
#include "TStyle.h"
#include "TFile.h"
#include "TTree.h"
#include "TChain.h"
#include "TCATSPhysics.h"
#include "TMust2Physics.h"
#include "Math/Point3D.h"
#include "ROOT/RDataFrame.hxx"
#include <ROOT/RVec.hxx>
#include "Utils.cpp"
#include <Rtypes.h>
#include <TCanvas.h>
#include <algorithm>
#include <iostream>
#include <vector>
void GetCuts()
{
ROOT::EnableImplicitMT();
/////////////////////////////////////////////////////
///READ DATA
gStyle->SetOptStat("nmeruoi");
auto* inFile {new TFile("/home/miguel/nptool/Projects/e748/output/analysis/Physics_12Be.root")};
//inFile->ls();
auto* tree {inFile->Get<TTree>("PhysicsTree")};
//tree->Print();
//load also chio chain
auto* chioChain {new TChain("Numexo2")};//runs for 12Be
std::set<int> runs {315, 316, 317, 318, 320, 321, 323, 325, 326, 327, 328, 329, 330, 331, 339, 341, 342, 346, 347, 348};
for(const auto& run : runs)
chioChain->Add(TString::Format("/home/miguel/nptool/Projects/e748/Data/Merged/run_%04d.root", run));
tree->AddFriend(chioChain);
////// DATAFRAME
ROOT::RDataFrame df(*tree);
//Apply base cut
auto baseCut = [](const TCATSPhysics& cats,
const std::vector<short>& vtel, const std::vector<double>& vCsIE,
unsigned short chioE, double QPlast, double T_CATS1_CAV)
{
//0--> Only one hit per event!
bool condSize {vtel.size() == 1};
//1--> Position on target should be inside its dimensions
bool condPosition {cats.PositionOnTargetY > -10 && cats.PositionOnTargetY < 10.
&& cats.PositionOnTargetX > -20. && cats.PositionOnTargetX < 20.};
//2--> Telescope number lower than 5
bool condTelescopeN {std::all_of(vtel.begin(), vtel.end(),
[](const auto& t){return t < 5;})};
//3--> CsI energy == 0!!
bool condCsIEnergy {std::all_of(vCsIE.begin(), vCsIE.end(),
[](const auto& e){return e < 0;})};
//4--> Recoil measured in IC and plastic
bool condRecoil {chioE > 0 && QPlast > 0};
//5--> TOF for beam, raw cut
bool condBeam {T_CATS1_CAV > 160. && T_CATS1_CAV < 235.};
return (condSize && condPosition && condTelescopeN && condCsIEnergy && condRecoil && condBeam);
};
auto gated {df.Filter(baseCut,
{"CATS",
"Must2Telescopes", "Must2CsIE",
"IC_E", "QPlast", "T_CATS1_CAV"})};
//Build ID for light recoil, based on TOF between CATS and MUST2
gated = gated.Define("TOFLight",
[](const std::vector<short>& vTel, const std::vector<double>& vSiT,
const double& timeCorr)
{
ROOT::RVecD v {};//serialize use of RVec even though we are working with a size=1 vector
for(int i = 0; i < vTel.size(); i++)
{
auto val1 {vSiT.at(i) + timeCorr};
auto tn {vTel.at(i)};
double opt {};
if(tn == 1)
opt = -2.521;
else if(tn == 2)
opt = 0.148;
else if(tn == 3)
opt = -1.922;
else if(tn == 4)
opt = -7.176;
v.push_back(val1 + opt);
}
return v;
},
{"Must2Telescopes", "Must2SiT", "TimeCorr"});
// //HISTOGRAMS
auto hCHIO { gated.Histo2D({"hCHIO", "Heavy ID;QPlast;IC_E", 4000, 0., 16000., 900, 0., 900.}, "QPlast", "IC_E")};
auto hPID {gated.Histo2D({"hPID", "PID;E_{Si} [MeV];TOF_{Heavy}[au]", 1000, 0., 30., 1000, 460., 580.}, "Must2SiE", "TOFLight")};
//--> Read TCutGs
auto* cutChio {GetGraphCutFromFile("./Cuts/chio_v0.root")};
auto* cutPID {GetGraphCutFromFile("./../TOF.root", "TOF")};
//plotting
auto* cID {new TCanvas("cID", "ID canvas", 1)};
cID->DivideSquare(2);
cID->cd(1);
hCHIO->DrawClone("colz");
cutChio->SetLineColor(kRed); cutChio->SetLineWidth(2);
cutChio->Draw("same");
cID->cd(2);
hPID->DrawClone("colz");
cutPID->SetLineColor(kRed); cutPID->SetLineWidth(2);
cutPID->Draw("same");
//save to disk gated TTree
gated.Snapshot("BaseCutTree", "./RootFiles/BaseCutTree_12Be.root");
}