showTritium.cxx
| 1 |
#include "TSystem.h" |
|---|---|
| 2 |
#include "TFile.h" |
| 3 |
#include "TTree.h" |
| 4 |
#include "TChain.h" |
| 5 |
#include "TCanvas.h" |
| 6 |
#include "TBox.h" |
| 7 |
#include "TCut.h" |
| 8 |
#include "TCutG.h" |
| 9 |
#include "TROOT.h" |
| 10 |
|
| 11 |
using std::cout;
|
| 12 |
using std::endl;
|
| 13 |
|
| 14 |
void showTritium(const Long64_t drawEntries = 100000) |
| 15 |
{
|
| 16 |
// const Long64_t drawEntries = 100000;
|
| 17 |
|
| 18 |
// TFile *fr = new TFile("~/data/exp1804/h5_11_00.root");
|
| 19 |
TChain *tr = new TChain("AnalysisxTree"); |
| 20 |
tr->Add("~/data/exp1804/h5_14_0?.root");
|
| 21 |
// tr->Add("~/data/exp1804/be10_0?_?0.root");
|
| 22 |
|
| 23 |
|
| 24 |
TChain *trCal = new TChain("cal"); |
| 25 |
// trCal->Add("~/data/exp1804/h5_11_0?_calib.root");
|
| 26 |
trCal->Add("~/data/exp1804/h5_14_0?_calib.root");
|
| 27 |
// trCal->Add("~/data/exp1804/be10_0?_?0_calib.root");
|
| 28 |
|
| 29 |
tr->AddFriend(trCal); |
| 30 |
|
| 31 |
TFile *fc = new TFile("cutsIdentification.root", "READ"); |
| 32 |
TCutG *cUS = (TCutG*)fc->Get("c7UpperShadow");
|
| 33 |
TCutG *cLS = (TCutG*)fc->Get("c7LowerShadow");
|
| 34 |
cLS->SetLineColor(kMagenta); |
| 35 |
TCutG *cMA = (TCutG*)fc->Get("c7MainAlpha");
|
| 36 |
TCutG *cA = (TCutG*)fc->Get("c7All");
|
| 37 |
TCutG *cBL = (TCutG*)fc->Get("cBeamLeft");
|
| 38 |
TCutG *cBR = (TCutG*)fc->Get("cBeamRight");
|
| 39 |
|
| 40 |
|
| 41 |
tr->GetListOfFiles()->Print(); |
| 42 |
trCal->GetListOfFiles()->Print(); |
| 43 |
|
| 44 |
cout << tr->GetEntries() << " events." << endl;
|
| 45 |
cout << trCal->GetEntries() << " calibrated events." << endl;
|
| 46 |
|
| 47 |
TString varName; |
| 48 |
TString condition; |
| 49 |
|
| 50 |
cout << drawEntries << " entries in input chain will be processed." << endl;
|
| 51 |
|
| 52 |
const Int_t firstThinStrip = 5; |
| 53 |
|
| 54 |
TFile *fCutsTime = new TFile("cutsTimeCsI.root"); |
| 55 |
TFile *fCutsTritium = new TFile("cutsDeltaEtritium.root"); |
| 56 |
TCutG *currCut; |
| 57 |
TString cutName; |
| 58 |
|
| 59 |
TString timeSiCondition; |
| 60 |
timeSiCondition.Form("0.3*tSQX_R[0]-0.125*tF5[0]<100");
|
| 61 |
// TString auxCon;
|
| 62 |
for (Int_t j = 1; j<32; j++) { |
| 63 |
condition.Form(" && 0.3*tSQX_R[%d]-0.125*tF5[0]<100", j);
|
| 64 |
timeSiCondition.Append(condition); |
| 65 |
} |
| 66 |
cout << timeSiCondition << endl; |
| 67 |
|
| 68 |
/////////////////////////////////////////////////////////////////////
|
| 69 |
// c1
|
| 70 |
|
| 71 |
|
| 72 |
TCanvas *c1 = new TCanvas("c1", "tritium raw", 1600, 800); |
| 73 |
c1->Divide(4,2); |
| 74 |
|
| 75 |
for (Int_t i = 0; i < 8; i++) { |
| 76 |
c1->cd(i+1);
|
| 77 |
|
| 78 |
varName.Form("SQRXE:NeEvent.CsI_R[%d]", i+firstThinStrip);
|
| 79 |
condition.Form("NeEvent.CsI_R[%d]<4000 "
|
| 80 |
"&& SQRXEsum<40 && SQRXmult==1 && SQRXE[0]<1 "
|
| 81 |
"&& trigger==3",
|
| 82 |
i+firstThinStrip); |
| 83 |
|
| 84 |
|
| 85 |
tr->SetMarkerColor(kBlack); |
| 86 |
tr->SetMarkerStyle(20);
|
| 87 |
tr->SetMarkerSize(0.1); |
| 88 |
tr->Draw(varName, condition, "", drawEntries);
|
| 89 |
c1->Update(); |
| 90 |
}//*/
|
| 91 |
// return;
|
| 92 |
|
| 93 |
/////////////////////////////////////////////////////////////////////
|
| 94 |
// c2
|
| 95 |
|
| 96 |
TCanvas *c2 = new TCanvas("c2", "time from right Si", 1600, 800); |
| 97 |
c2->Divide(4,2); |
| 98 |
|
| 99 |
for (Int_t i = 0; i < 8; i++) { |
| 100 |
c2->cd(i+1);
|
| 101 |
// varName.Form("SQ20E[%d]:SQLYEsum", i+firstThinStrip);
|
| 102 |
varName.Form("SQRXE[%d]:0.3*tSQX_R[%d]-0.125*tF5[0]", i+firstThinStrip, i+firstThinStrip);
|
| 103 |
condition.Form("tSQX_R[%d]>0"
|
| 104 |
// "&& SQLYEsum>1.1 && SQLYEsum<30 "
|
| 105 |
// "&& SQLYE[0]<1. && SQLYE[15]<1."
|
| 106 |
// "&& SQLYmult==1 && SQLXmult==1"
|
| 107 |
"&& trigger==3",
|
| 108 |
i+firstThinStrip); |
| 109 |
tr->SetMarkerColor(kBlack); |
| 110 |
tr->Draw(varName, condition, "", drawEntries);
|
| 111 |
// tr->Draw(varName, condition, "", drawEntries);
|
| 112 |
|
| 113 |
|
| 114 |
condition.Form( |
| 115 |
// "tSQX_R[%d]>0"
|
| 116 |
// "&& 0.3*tSQX_R-0.125*tF5[0] <100 "
|
| 117 |
// "&& SQLYE[0]<1. && SQLYE[15]<1."
|
| 118 |
// "&& SQLYmult==1 && SQLXmult==1"
|
| 119 |
"trigger==3 && %s",
|
| 120 |
// i+firstThinStrip,
|
| 121 |
timeSiCondition.Data()); |
| 122 |
|
| 123 |
tr->SetMarkerColor(kRed); |
| 124 |
tr->Draw(varName, condition, "same", drawEntries);
|
| 125 |
|
| 126 |
c2->Update(); |
| 127 |
}//for */
|
| 128 |
|
| 129 |
|
| 130 |
|
| 131 |
// return;
|
| 132 |
|
| 133 |
/////////////////////////////////////////////////////////////////////
|
| 134 |
// c3
|
| 135 |
|
| 136 |
TCanvas *c3 = new TCanvas("c3", "time from CsI", 1000, 900); |
| 137 |
c3->Divide(4,4); |
| 138 |
|
| 139 |
// gROOT->ProcessLine(".x cutPokus.cxx");
|
| 140 |
|
| 141 |
|
| 142 |
|
| 143 |
for (Int_t i = 0; i < 16; i++) { |
| 144 |
c3->cd(i+1);
|
| 145 |
// varName.Form("SQRXE[%d]:0.3*tSQX_R[%d]-0.125*tF5[]", i+firstThinStrip, i+firstThinStrip);
|
| 146 |
// condition.Form("SQRXE[%d]>3 && trigger==3",
|
| 147 |
// i+firstThinStrip);
|
| 148 |
cutName.Form("cTime%d", i);
|
| 149 |
currCut = (TCutG*)fCutsTime->Get(cutName); |
| 150 |
|
| 151 |
varName.Form("CsI_R[%d]:0.125*tCsI_R[%d]-0.125*tF5[0]", i, i);
|
| 152 |
condition.Form("CsI_R[%d]>3 && trigger==3"
|
| 153 |
"&& 0.125*tCsI_R[%d]-0.125*tF5[0] > -80"
|
| 154 |
"&& 0.125*tCsI_R[%d]-0.125*tF5[0] < 0"
|
| 155 |
"&& CsI_R[%d] < 4500",
|
| 156 |
i, i, i, i); |
| 157 |
|
| 158 |
tr->SetMarkerColor(kBlack); |
| 159 |
tr->Draw(varName, condition, "", drawEntries);
|
| 160 |
// tr->Draw(varName, condition, "", drawEntries);
|
| 161 |
|
| 162 |
currCut->Draw("same");
|
| 163 |
|
| 164 |
c3->Update(); |
| 165 |
}//*/
|
| 166 |
|
| 167 |
|
| 168 |
|
| 169 |
// return;
|
| 170 |
|
| 171 |
/////////////////////////////////////////////////////////////////////
|
| 172 |
// c4
|
| 173 |
|
| 174 |
TCanvas *c4 = new TCanvas("c4", "PID plot from CsI filtered for time", 1600, 800); |
| 175 |
c4->Divide(4,2); |
| 176 |
|
| 177 |
|
| 178 |
for (Int_t i = 0; i < 8; i++) { |
| 179 |
c4->cd(i+1);
|
| 180 |
|
| 181 |
cutName.Form("cTime%d", i+firstThinStrip);
|
| 182 |
currCut = (TCutG*)fCutsTime->Get(cutName); |
| 183 |
|
| 184 |
varName.Form("SQRXE:NeEvent.CsI_R[%d]", i+firstThinStrip);
|
| 185 |
condition.Form("NeEvent.CsI_R[%d]<3500"
|
| 186 |
"&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1"
|
| 187 |
"&& trigger==3 && %s && %s",
|
| 188 |
i+firstThinStrip, cutName.Data(), timeSiCondition.Data()); |
| 189 |
tr->SetMarkerColor(kBlack); |
| 190 |
tr->Draw(varName, condition, "", drawEntries);
|
| 191 |
// tr->Draw(varName, "", "", drawEntries);
|
| 192 |
// tr->Draw(varName, condition, "", drawEntries);
|
| 193 |
|
| 194 |
// tAlphaCal->Draw(varName, "", "same");
|
| 195 |
|
| 196 |
cutName.Form("cutEnergy%d", i+firstThinStrip);
|
| 197 |
currCut = (TCutG*)fCutsTritium->Get(cutName); |
| 198 |
|
| 199 |
currCut->Draw("same");
|
| 200 |
|
| 201 |
c4->Update(); |
| 202 |
}//*/
|
| 203 |
|
| 204 |
// return;
|
| 205 |
|
| 206 |
/////////////////////////////////////////////////////////////////////
|
| 207 |
// c5
|
| 208 |
|
| 209 |
TCanvas *c5 = new TCanvas("c5", "PID plot from CsI filtered for time", 1000, 1000); |
| 210 |
c5->Divide(4,4); |
| 211 |
|
| 212 |
TCutG *currCutTritium; |
| 213 |
TString cutNameTritium; |
| 214 |
|
| 215 |
TString cutHe("(cutHe0");
|
| 216 |
TString cutNameHe; |
| 217 |
TFile *fCutsHelium = new TFile("cutsDeltaEhelium.root"); |
| 218 |
TCutG *cutsHe[14];
|
| 219 |
for (Int_t i = 0; i<14; i++) { |
| 220 |
cutNameHe.Form("cutHe%d", i);
|
| 221 |
cutsHe[i] = (TCutG*)fCutsHelium->Get(cutNameHe); |
| 222 |
cutName.Form(" || %s", cutNameHe.Data());
|
| 223 |
if (i>0) cutHe.Append(cutName); |
| 224 |
} |
| 225 |
cutHe.Append(")");
|
| 226 |
|
| 227 |
cout << endl << endl << cutHe << endl; |
| 228 |
|
| 229 |
Int_t numberOfHe[16];
|
| 230 |
|
| 231 |
for (Int_t i = 0; i < 16; i++) { |
| 232 |
c5->cd(i+1);
|
| 233 |
|
| 234 |
cutName.Form("cTime%d", i);
|
| 235 |
currCut = (TCutG*)fCutsTime->Get(cutName); |
| 236 |
|
| 237 |
cutNameTritium.Form("cutEnergy%d", i);
|
| 238 |
currCutTritium = (TCutG*)fCutsTritium->Get(cutNameTritium); |
| 239 |
|
| 240 |
varName.Form("SQRXE:NeEvent.CsI_R[%d]", i);
|
| 241 |
condition.Form("NeEvent.CsI_R[%d]<3500"
|
| 242 |
"&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1"
|
| 243 |
"&& trigger==3 && %s && %s",
|
| 244 |
i, |
| 245 |
cutName.Data(), timeSiCondition.Data()); |
| 246 |
tr->SetMarkerColor(kBlack); |
| 247 |
tr->SetMarkerStyle(20);
|
| 248 |
tr->SetMarkerSize(.4);
|
| 249 |
tr->Draw(varName, condition, "", drawEntries/100); |
| 250 |
// tr->Draw(varName, "", "", drawEntries);
|
| 251 |
// tr->Draw(varName, condition, "", drawEntries);
|
| 252 |
|
| 253 |
// tAlphaCal->Draw(varName, "", "same");
|
| 254 |
|
| 255 |
// cutName.Form("cutEnergy%d", i);
|
| 256 |
// currCut = (TCutG*)fCutsTritium->Get(cutName);
|
| 257 |
|
| 258 |
currCutTritium->Draw("same");
|
| 259 |
c5->Update(); |
| 260 |
|
| 261 |
condition.Form("NeEvent.CsI_R[%d]<3500"
|
| 262 |
"&& SQRXEsum<25 && SQRXEsum>1 && SQRXmult==1"
|
| 263 |
"&& trigger==3 && %s && %s && %s && %s",
|
| 264 |
i, |
| 265 |
cutName.Data(), timeSiCondition.Data(), cutNameTritium.Data(), cutHe.Data()); |
| 266 |
tr->SetMarkerColor(kRed); |
| 267 |
tr->SetMarkerStyle(20);
|
| 268 |
tr->SetMarkerSize(1);
|
| 269 |
numberOfHe[i] = tr->Draw(varName, condition, "same", drawEntries);
|
| 270 |
cout << "CsI number " << i << ": " << numberOfHe[i] << " events" << endl; |
| 271 |
|
| 272 |
c5->Update(); |
| 273 |
} |
| 274 |
|
| 275 |
cout << endl << endl; |
| 276 |
|
| 277 |
for (Int_t i = 0; i < 16; i++) { |
| 278 |
cout << "CsI number " << i << ": " << numberOfHe[i] << " events" << endl; |
| 279 |
} |
| 280 |
|
| 281 |
|
| 282 |
return;
|
| 283 |
|
| 284 |
} |