selection.C
| 1 |
#include "/home/muzalevskii/work/macro/h7_1904/cuts/scripts/create_cuts.C" |
|---|---|
| 2 |
#include "/home/muzalevskii/work/macro/h7_1904/cuts/scripts/create_IDs.C" |
| 3 |
|
| 4 |
void calculateBeam();
|
| 5 |
void zeroVars();
|
| 6 |
|
| 7 |
//outtree vars
|
| 8 |
Int_t trigger; |
| 9 |
|
| 10 |
Float_t tF5,F5,tF3,F3; |
| 11 |
|
| 12 |
Float_t tMWPC; |
| 13 |
Float_t wirex1,wirex2,wirey1,wirey2; |
| 14 |
|
| 15 |
// reconstructed
|
| 16 |
Float_t fXt,fYt; |
| 17 |
Float_t x1c, y1c, x2c, y2c; |
| 18 |
|
| 19 |
TLorentzVector he8; |
| 20 |
|
| 21 |
void selection(TString InFile, TString OutFile) {
|
| 22 |
|
| 23 |
TChain *ch = new TChain("tree"); |
| 24 |
// TString inPutFileName;
|
| 25 |
// inPutFileName.Form("/mnt/data/exp1904/analysed/cal/h7/h7_ct_%d_cal.root",nFile);
|
| 26 |
// inPutFileName.Form("/mnt/data/exp1904/ERanalysis/tests/reco/test_convert.root",nFile);
|
| 27 |
ch->Add(InFile.Data()); |
| 28 |
|
| 29 |
|
| 30 |
cout << ch->GetEntries() << endl; |
| 31 |
//--------------------------------------------------------------------------------
|
| 32 |
ch->SetBranchAddress("trigger",&trigger);
|
| 33 |
|
| 34 |
ch->SetBranchAddress("F5.",&F5);
|
| 35 |
ch->SetBranchAddress("tF5.",&tF5);
|
| 36 |
ch->SetBranchAddress("F3.",&F3);
|
| 37 |
ch->SetBranchAddress("tF3.",&tF3);
|
| 38 |
|
| 39 |
ch->SetBranchAddress("tMWPC.",&tMWPC);
|
| 40 |
ch->SetBranchAddress("wirex1.",&wirex1);
|
| 41 |
ch->SetBranchAddress("wirex2.",&wirex2);
|
| 42 |
ch->SetBranchAddress("wirey1.",&wirey1);
|
| 43 |
ch->SetBranchAddress("wirey2.",&wirey2);
|
| 44 |
|
| 45 |
ch->SetBranchAddress("x1c.",&x1c); // position in MWPC in mm |
| 46 |
ch->SetBranchAddress("y1c.",&y1c);
|
| 47 |
ch->SetBranchAddress("x2c.",&x2c);
|
| 48 |
ch->SetBranchAddress("y2c.",&y2c);
|
| 49 |
ch->SetBranchAddress("fXt.",&fXt); // beam profile at the target plane |
| 50 |
ch->SetBranchAddress("fYt.",&fYt);
|
| 51 |
|
| 52 |
// TString outPutFileName;
|
| 53 |
// outPutFileName.Form("/media/ivan/data/exp1904/analysed/novPars/beamDiagnostics/selected/h7_ct_%d_cut_newPars.root",nFile);
|
| 54 |
// outPutFileName.Form("/mnt/data/exp1904/analysed/selected/h7/h7_ct_%d_cut.root",nFile);
|
| 55 |
// outPutFileName.Form("temp1.root");
|
| 56 |
// outPutFileName.Form("/mnt/data/exp1904/ERanalysis/tests/selected/selected.root",nFile);
|
| 57 |
|
| 58 |
TFile *fw = new TFile(OutFile.Data(), "RECREATE"); |
| 59 |
// TFile *fw = new TFile("test.root", "RECREATE");
|
| 60 |
TTree *tw = new TTree("tree", "data"); |
| 61 |
|
| 62 |
tw->Branch("trigger.",&trigger,"trigger/I"); |
| 63 |
|
| 64 |
tw->Branch("F5.",&F5,"F5/F"); |
| 65 |
tw->Branch("tF5.",&tF5,"tF5/F"); |
| 66 |
tw->Branch("F3.",&F3,"F3/F"); |
| 67 |
tw->Branch("tF3.",&tF3,"tF3/F"); |
| 68 |
|
| 69 |
tw->Branch("tMWPC.",&tMWPC,"tMWPC/F"); |
| 70 |
tw->Branch("wirex1.",&wirex1,"wirex1/F"); |
| 71 |
tw->Branch("wirex2.",&wirex2,"wirex2/F"); |
| 72 |
tw->Branch("wirey1.",&wirey1,"wirey1/F"); |
| 73 |
tw->Branch("wirey2.",&wirey2,"wirey2/F"); |
| 74 |
|
| 75 |
tw->Branch("x1c.",&x1c,"x1c/F"); |
| 76 |
tw->Branch("y1c.",&y1c,"y1c/F"); |
| 77 |
tw->Branch("x2c.",&x2c,"x2c/F"); |
| 78 |
tw->Branch("y2c.",&y2c,"y2c/F"); |
| 79 |
tw->Branch("fXt.",&fXt,"fXt/F"); |
| 80 |
tw->Branch("fYt.",&fYt,"fYt/F"); |
| 81 |
|
| 82 |
tw->Branch("he8","TLorentzVector",&he8); |
| 83 |
|
| 84 |
for(Int_t nentry=0;nentry<ch->GetEntries();nentry++) { |
| 85 |
// for(Int_t nentry=0;nentry<10;nentry++) {
|
| 86 |
if(nentry%1000000==0) cout << "#ENTRY " << nentry << "#" << endl; |
| 87 |
|
| 88 |
ch->GetEntry(nentry); |
| 89 |
|
| 90 |
|
| 91 |
zeroVars(); |
| 92 |
|
| 93 |
calculateBeam(); |
| 94 |
|
| 95 |
tw->Fill(); |
| 96 |
} |
| 97 |
fw->cd(); |
| 98 |
tw->Write(); |
| 99 |
fw->Close(); |
| 100 |
|
| 101 |
return;
|
| 102 |
} |
| 103 |
|
| 104 |
void zeroVars() {
|
| 105 |
|
| 106 |
he8.SetXYZT(0,0,0,0); |
| 107 |
|
| 108 |
} |
| 109 |
|
| 110 |
void calculateBeam() {
|
| 111 |
|
| 112 |
TVector3 dir; |
| 113 |
dir.SetXYZ(fXt-x1c,fYt-y1c,815.); |
| 114 |
// dir.SetXYZ(x2c-x1c,y2c-y1c,545.);
|
| 115 |
Double_t phi = dir.Phi(); |
| 116 |
Double_t theta = dir.Theta(); |
| 117 |
|
| 118 |
Double_t len = dir.Mag(); |
| 119 |
|
| 120 |
Double_t mass = 8.406868788; |
| 121 |
|
| 122 |
Double_t velocity = 12320./(tF5-tF3 + 68.475); |
| 123 |
Double_t beta = sqrt(1 - (velocity*velocity/(299.792458*299.792458) ) ); |
| 124 |
Double_t kinEnergy = mass*((1/beta) - 1); |
| 125 |
|
| 126 |
// cout << tF5-tF3 + 68.475 << " " << 1000*kinEnergy << endl;;
|
| 127 |
|
| 128 |
// velocity = 12320./(tF5-tF3 + 68.475);
|
| 129 |
// beta = sqrt(1 - (velocity*velocity/(299.792458*299.792458) ) );
|
| 130 |
// kinEnergy = mass*((1/beta) - 1);
|
| 131 |
|
| 132 |
// cout << 1000*kinEnergy << " ";
|
| 133 |
|
| 134 |
// velocity = 12320./(tF5-tF3 + 68.475+1);
|
| 135 |
// beta = sqrt(1 - (velocity*velocity/(299.792458*299.792458) ) );
|
| 136 |
// kinEnergy = mass*((1/beta) - 1);
|
| 137 |
|
| 138 |
// cout << 1000*kinEnergy << endl;
|
| 139 |
|
| 140 |
Double_t momentum = sqrt(kinEnergy*kinEnergy + 2*kinEnergy*mass);
|
| 141 |
|
| 142 |
momentum = TMath::Abs(momentum); |
| 143 |
|
| 144 |
he8.SetXYZM(momentum*TMath::Sin(theta)*TMath::Cos(phi), momentum*TMath::Sin(theta)*TMath::Sin(phi), momentum*TMath::Cos(theta) ,mass); |
| 145 |
|
| 146 |
return;
|
| 147 |
} |