new file: Armory/Kinematics.cpp

new file:   Armory/Kinematics.h
	new file:   Armory/PC_StepLadder_Correction.h
	modified:   BatchProcess.sh
	deleted:    ELoss/Eloss.py
	deleted:    ELoss/Eloss_17F
	deleted:    ELoss/Eloss_27Al
	deleted:    ELoss/Eloss_alpha
	deleted:    ELoss/Eloss_p
	deleted:    ELoss/alpha_lookup_20MeV.dat
	deleted:    ELoss/alpha_lookup_6.0MeV.dat
	deleted:    ELoss/proton_lookup_20MeV.dat
	deleted:    ELoss/proton_lookup_6.0MeV.dat
	modified:   MakeVertex.C
This commit is contained in:
Vignesh Sitaraman 2026-05-01 12:01:42 -04:00
parent 15e60a0cc1
commit 3f55a2a81e
18 changed files with 690 additions and 181798 deletions

View File

@ -36,7 +36,7 @@ private:
inline void FillN_All_Histograms();
public:
HistPlotter(std::string outfile, std::string type);
inline void FlushToDisk(); //!< Writes all objects to file before closing, nesting objects in folders as is found necessary
inline void FlushToDisk(int integral); //!< Writes all objects to file before closing, nesting objects in folders as is found necessary
inline void PrintObjects(); //!< Dump objects to std::cout for inspection
inline void ReadCuts(std::string);
inline TCutG* FindCut(std::string cut) {
@ -117,7 +117,8 @@ void HistPlotter::FillN_All_Histograms() {
}
std::cout << "." << std::endl;
}
void HistPlotter::FlushToDisk() {
void HistPlotter::FlushToDisk(int min_integral=0) {
/*! \fn void FlushToDisk()
\brief Function that can be used at any point to exit smoothly by saving all ROOT objects in memory
to the output file before closing it. Obeys the binding of histograms to separate folders, if so specified.
@ -143,6 +144,7 @@ void HistPlotter::FlushToDisk() {
} else {
ofile->cd(); //toplevel for all default histograms. Default setting
}
if(((TH1F*)it->second)->Integral()>min_integral)
it->second->Write();
}

111
Armory/Kinematics.cpp Normal file
View File

@ -0,0 +1,111 @@
#include "Kinematics.h"
//#include "elastcaller.h"
//double Kinematics::getQval(double m1, double m2, double m3, double t1, double t3, double angle3)
double Kinematics::getExc(double t3, double angle3)
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\return Excitation energy of the heavy-recoil nucleus in MeV
*/
{
double m1 = m_A;
double m2 = m_d;
double m3 = m_p;
double m4 = m_B;
double t1 = E_beam;
//t1 = slowitdown("75Ga",t1,"1(12C)2(2H)",1.2);
m1 *= u_MeV;
m2 *= u_MeV;
m3 *= u_MeV;
m4 *= u_MeV;
double e1 = m1 + t1;
double e3 = m3 + t3;
ET = t1 + m1 + m2;
double p1 = TMath::Sqrt(t1*t1 + 2*m1*t1);
double p3 = TMath::Sqrt(t3*t3 + 2*m3*t3);
double cosTheta = TMath::Cos(angle3*TMath::Pi()/180.);
// return m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
double Q = m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
Qx = Q;
T4 = ET - e3 - (m1+m2-m3-Q);
//T4 = slowitdown("75Ga",T4,"1(12C)2(2H)",1.2);
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
//this angle will not be affected by eloss
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
// T4-=16.5; //eloss in about 1.4 mg CD2
T4-=15.5; //eloss in 1.35 mg CD2 //TODO: actually degrade recoil/ejectiles in target
// T4-=14.1; //eloss in about 1.2 mg CD2
// T4-=31.7; //eloss in 2.7 mg CD2
//recalculate everything other than angle with lowered Kinetic energy
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
gamma4 = T4/m4+1.;
beta4 = TMath::Sqrt(1. - 1./(gamma4*gamma4));
//beta4 = TMath::Sqrt((P4*P4)/(P4*P4 + m4*m4));
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
return Q0 - Q;//Q0 = Q + Exc
}
double Kinematics::getBeta4(double t3, double angle3)
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\return doppler-shift beta (=v/c) of the heavy-recoil nucleus, calls getExc() to fill the value
*/
{
getExc(t3, angle3);
return beta4;
}
double Kinematics::getBrho(double t3, double angle3, double charge_state) {
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
\return b-rho value, generated from P4*3.3359e-3/charge_state where P4 is 4momentum of heavy-recoil calculated from orruba kinematics
*/
getExc(t3,angle3);
return P4*3.3359e-3/charge_state;
}
double Kinematics::getTheta4(double t3, double angle3) {
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
\return lab theta value of heavy recoil in degrees
*/
getExc(t3,angle3);
return theta4;
}

207
Armory/Kinematics.h Normal file
View File

@ -0,0 +1,207 @@
#ifndef KINEMATICS_H
#define KINEMATICS_H
#include <TMath.h>
#include <iostream>
#include <fstream>
#include <string>
#include <TVector3.h>
const double u_MeV = 931.49410372; //u in MeV
class Kinematics {
public:
/*
A(d,p)B is used as template, with A being beam, and p being ejectile.
Always, make m3 the thing you detect, and m1 the beam
*/
double m_A, m_d, m_p, m_B;
double E_beam;
/**
* @{ \name List of funny impossible default values
*/
/**
* \brief Default values used for all the physics values
*/
double Q0=-9999, Qx=-9999;
double P4=-9999, E4=-9999, T4=-9999; //heavy recoil momentum, totE, KE
double P3=-9999, E3=-9999, T3=-9999; //light recoil
double ET=-9999;
double gamma4=-9999, beta4=-9999, theta4=-9999; //theta=heavy-recoil lab angle
double brho=-9999;
/**
* @}
*/
Kinematics(double m1, double m2, double m3, double m4, double ebeam) {
/*
A(d,p)B is used as template, with A being beam, and p being ejectile.
Always, make m3 the thing you detect, m2 the target, and m1 the beam
ebeam is in MeV/u, all others are in amu
*/
m_A = m1;
m_d = m2;
m_p = m3, m_B = m4, E_beam = ebeam*m_A;
Q0 = (- m_B - m_p + m_d + m_A)*u_MeV;
}
Kinematics() {}
void setValues(double m1, double m2, double m3, double m4, double ebeam) {
/*
Can be used to 'live update' say the beam energy in the case of active target detectors.
*/
m_A = m1;
m_d = m2;
m_p = m3, m_B = m4, E_beam = ebeam*m_A;
Q0 = (- m_B - m_p + m_d + m_A)*u_MeV;
//std::cout << "Q0 MeV: " << Q0 << std::endl;
}
void setEBeam(double Ebeam) {E_beam = Ebeam;}
double getBeta4(double t3, double angle3);
double getTheta4(double t3, double angle3);
double getBrho(double t3, double angle3, double charge_state);
double getExc(double t3, double angle3); //t3 is proton energy detected in ORRUBA, angle3 is proton angle in degrees
double getBeta4_fromvec(double t3, const TVector3 &pos, const TVector3 &origin) {
TVector3 local = pos - origin; //position w.r.t origin
float angle = local.Theta()*180./M_PI;
return getBeta4(t3, angle);
}
double getExc_fromvec(double t3, const TVector3 &pos, const TVector3 &origin) {
TVector3 local = pos - origin; //position w.r.t origin
float angle = local.Theta()*180./M_PI;
return getExc(t3, angle);
}
void setValuesFromFile(const std::string& filename) {
(void) filename;
/*std::ifstream in;
in.open(filename);
if(!in) {
std::cerr<< "File not open at " << filename << std::endl;
return;
}
for(std::string line; std::getline(in, line); ) {
if(line.size()!=0 && line[0]=='#')
; //don't do anything with '#' lines
else {
std::stringstream ss(line);
ss>>m_A>>m_d>>m_p>>m_B>>E_beam;
}
}
in.close();*/
}
};
//double Kinematics::getQval(double m1, double m2, double m3, double t1, double t3, double angle3)
double Kinematics::getExc(double t3, double angle3)
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
All calculations are done here, and other wrapper functions written make derived quantities from stuff calculated here.
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\return Excitation energy of the heavy-recoil nucleus in MeV
*/
{
double m1 = m_A;
double m2 = m_d;
double m3 = m_p;
double m4 = m_B;
double t1 = E_beam;
m1 *= u_MeV;
m2 *= u_MeV;
m3 *= u_MeV;
m4 *= u_MeV;
double e1 = m1 + t1;
double e3 = m3 + t3;
ET = t1 + m1 + m2;
double p1 = TMath::Sqrt(t1*t1 + 2*m1*t1);
double p3 = TMath::Sqrt(t3*t3 + 2*m3*t3);
double cosTheta = TMath::Cos(angle3*TMath::Pi()/180.);
// return m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
double Q = m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
Qx = Q;
//Recoil properties just in case it's useful
T4 = ET - e3 - (m1+m2-m3-Q);
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
//this angle will not be affected by eloss
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
//recalculate everything other than angle with lowered Kinetic energy
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
gamma4 = T4/m4+1.;
beta4 = TMath::Sqrt(1. - 1./(gamma4*gamma4));
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
return Q0 - Q;//Q0 = Q + Exc
}
double Kinematics::getBeta4(double t3, double angle3)
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\return doppler-shift beta (=v/c) of the heavy-recoil nucleus, calls getExc() to fill the value
*/
{
getExc(t3, angle3);
return beta4;
}
double Kinematics::getBrho(double t3, double angle3, double charge_state) {
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
\return b-rho value, generated from P4*3.3359e-3/charge_state where P4 is 4momentum of heavy-recoil calculated from orruba kinematics
*/
getExc(t3,angle3);
return P4*3.3359e-3/charge_state;
}
double Kinematics::getTheta4(double t3, double angle3) {
/*
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
m1 is beam, (typically heavy nucleus)
m2 is 'd', (light target)
m3 is 'p', (light ejectile mass)
t1 is beam kinetic energy,
\param t3 lab-kinetic-energy in MeV
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
\return lab theta value of heavy recoil in degrees
*/
getExc(t3,angle3);
return theta4;
}
#endif

View File

@ -0,0 +1,42 @@
#include <TF1.h>
double model(double* x, double* p) {
double result = x[0];
double factor = 29.0;
double slope = 0.7;
if(TMath::Abs(x[0]) < 16.2) result=x[0]*slope;
else if(TMath::Abs(x[0]) < 49.8 ) result=x[0]*slope+TMath::Sign(1.0,x[0])*factor;
else if(TMath::Abs(x[0]) < 85.2 ) result=x[0]*slope+TMath::Sign(1.0,x[0])*factor*2;
else result=x[0]*slope+TMath::Sign(1.0,x[0])*factor*2;
return result;
}
double model_invert(double *y, double *q) {
double result=y[0];
double slope = 0.7;
double factor = 40.0;
if(TMath::Abs(y[0]) < 16.2/slope) result = y[0]/slope;
else if(TMath::Abs(y[0]) < 49.8/slope ) result=y[0]/slope-TMath::Sign(1.0,y[0])*factor;
else if(TMath::Abs(y[0]) < 85.2/slope ) result=y[0]/slope-TMath::Sign(1.0,y[0])*factor*2;
else result=y[0]/slope-TMath::Sign(1.0,y[0])*factor*2;
return result+40;
}
/*void testmodel() {
TF1 eqline("x","x",-200,200);
eqline.Draw("");
eqline.SetLineStyle(kDashed);
//TF1 f1("model",model,-200,200,2);
TF1 f1("model_inv",model_invert,-200,200,2);
eqline.SetNpx(10000);
f1.SetNpx(10000);
std::vector<double> pars = {0.0,1.};
f1.SetParameters(pars.data());
f1.SetLineColor(kGreen+2);
f1.SetLineStyle(kLine);
f1.Draw("L SAME");
gPad->Modified(); gPad->Update();
while(gPad->WaitPrimitive());
}*/

View File

@ -1,6 +1,6 @@
#!/bin/bash
#parallel -j 6 echo ./ProcessRun.sh {1} 2000 0 ::: {020..400}
parallel --results log/log_{}.txt --ctag -j 3 ./ProcessRun.sh {1} 2000 0 ::: {109..400} # for 17F
parallel --jobs 1 --results log/log_{}.txt --memfree 1G --ctag -j 1 ./ProcessRun.sh {1} 2000 0 ::: {109..400} # for 17F
# parallel --results log/log_{}.txt --ctag -j 6 ./ProcessRun.sh {1} 4000 0 ::: {5..21}

View File

@ -1,62 +0,0 @@
import pycatima as catima
import numpy as np
# --- 1. Constants ---
P_TORR = 250
TEMP_K = 293.15
R = 8.3144
MEV2U = 1.0 / 931.494
# Gas Density Calculations
p_pa = P_TORR * 133.322
molar_density = p_pa / (R * TEMP_K)
m_he, m_c, m_o = 4.0026, 12.0000, 15.9949
m_mix_avg = (0.96 * m_he) + (0.04 * (m_c + 2*m_o))
rho_g_cm3 = (molar_density * m_mix_avg) / 1e6
print(f"Gas density at {P_TORR} Torr: {rho_g_cm3:.6e} g/cm^3")
# --- 2. Material & Step Setup ---
material_def = [(m_he, 2, 0.96), (m_c, 6, 0.04), (m_o, 8, 0.08)]
gas_mix = catima.Material(material_def)
gas_mix.density(rho_g_cm3)
# Thickness step settings
step_mg_cm2 = 0.001 # 1 ug/cm2 steps as per your example
step_g_cm2 = step_mg_cm2 / 1000.0
max_steps = 100000 # Adjust based on how far you want to track
def generate_lookup(z, mass_u, e_start_mev, label):
filename = f"{label}_lookup_{e_start_mev}MeV.dat"
projectile = catima.Projectile(mass_u, z)
current_e_total = e_start_mev
current_thickness_g_cm2 = 0.0
output = []
header = f"Energy(MeV) \tmg/cm2 \tcm\nStarting Energy: {e_start_mev} MeV"
for i in range(max_steps):
# 1. Record current state
dist_cm = current_thickness_g_cm2 / rho_g_cm3
output.append([current_e_total, current_thickness_g_cm2 * 1000.0, dist_cm])
# 2. Calculate energy loss for the NEXT step
e_u = current_e_total / mass_u
if e_u < 0.01: # Stop at ATIMA limit
break
projectile.T(e_u)
# dedx returns MeV / (g/cm2)
loss_mev = catima.dedx(projectile, gas_mix) * step_g_cm2
# 3. Update values
current_e_total -= loss_mev
current_thickness_g_cm2 += step_g_cm2
np.savetxt(filename, output, fmt='%.6f', delimiter='\t', header=header)
print(f"Lookup table created: {filename}")
# --- 3. Run ---
# Format: generate_lookup(Z, mass_u, E_start_MeV, label)
generate_lookup(1, 1.0078, 20, "proton")
generate_lookup(2, 4.0026, 20, "alpha")

View File

@ -1,268 +0,0 @@
0.017002095 0.00676442
0.03400419 0.0135288
0.085010476 0.032227
0.136016762 0.0489265
0.170020952 0.0592235
0.255031428 0.0823584
0.340041904 0.102374
0.42505238 0.120086
0.510062856 0.135943
0.595073332 0.150461
0.680083808 0.164011
0.765094284 0.176885
0.85010476 0.189282
0.935115236 0.201176
1.020125712 0.212518
1.190146664 0.233962
1.360167616 0.254045
1.530188568 0.27299
1.70020952 0.291072
2.040251424 0.325807
2.380293328 0.359536
2.720335232 0.392589
3.060377136 0.425159
3.40041904 0.457286
4.2505238 0.536817
5.10062856 0.615601
5.95073332 0.693052
6.80083808 0.769499
7.65094284 0.845324
8.5010476 0.920793
10.20125712 1.07377
11.90146664 1.23229
13.60167616 1.39414
15.30188568 1.55782
17.0020952 1.72459
21.252619 2.15811
25.5031428 2.61883
29.7536666 3.10864
34.0041904 3.62853
38.2547142 4.17854
42.505238 4.75843
51.0062856 6.00863
59.5073332 7.38089
68.0083808 8.87668
76.5094284 10.4957
85.010476 12.2377
93.5115236 14.1011
102.0125712 16.0845
110.5136188 18.1875
119.0146664 20.4097
127.515714 22.7505
136.0167616 25.2096
144.5178092 27.7867
153.0188568 30.4814
161.5199044 33.2935
170.020952 36.2195
187.0230472 42.214
204.0251424 48.6246
221.0272376 55.449
238.0293328 62.6845
255.031428 70.3284
272.0335232 78.3781
289.0356184 86.8308
306.0377136 95.684
323.0398088 104.935
340.041904 114.581
357.0439992 124.619
374.0460944 135.048
391.0481896 145.863
408.0502848 157.064
425.05238 168.647
459.0565704 192.95
493.0607608 218.753
527.0649512 246.038
561.0691416 274.787
595.073332 304.983
646.0796176 352.95
697.0859032 404.079
748.0921888 458.315
799.0984744 515.608
850.10476 575.909
935.115236 682.969
1020.125712 798.048
1105.136188 920.949
1190.146664 1051.49
1275.15714 1189.49
1360.167616 1334.78
1445.178092 1487.21
1530.188568 1646.62
1615.199044 1812.86
1700.20952 1985.8
1785.219996 2165.29
1870.230472 2351.2
1955.240948 2543.42
2040.251424 2741.82
2125.2619 2946.27
2210.272376 3156.67
2295.282852 3372.91
2380.293328 3594.88
2465.303804 3822.47
2550.31428 4055.59
2635.324756 4294.14
2720.335232 4538.01
2805.345708 4787.13
2890.356184 5041.4
2975.36666 5300.73
3060.377136 5565.04
3145.387612 5834.24
3230.398088 6108.26
3315.408564 6387.01
3400.41904 6670.42
3570.439992 7250.92
3740.460944 7849.17
3910.481896 8464.62
4080.502848 9096.74
4250.5238 9745.02
4420.544752 10409
4590.565704 11088.2
4760.586656 11782.1
4930.607608 12490.4
5100.62856 13212.7
5270.649512 13948.5
5440.670464 14697.4
5610.691416 15459.2
5780.712368 16233.4
5950.73332 17019.7
6120.754272 17817.8
6290.775224 18627.3
6460.796176 19448
6630.817128 20279.6
6800.83808 21121.8
6970.859032 21974.2
7140.879984 22836.7
7310.900936 23709
7480.921888 24590.9
7650.94284 25482
7820.963792 26382.2
7990.984744 27291.2
8161.005696 28208.8
8331.026648 29134.9
8501.0476 30069.1
8841.089504 31961.3
9181.131408 33884
9521.173312 35835.8
9861.215216 37815.1
10201.25712 39820.8
10541.29902 41851.6
10881.34093 43906.4
11221.38283 45984.1
11561.42474 48083.6
11901.46664 50203.9
12241.50854 52344.2
12581.55045 54503.4
12921.59235 56680.8
13261.63426 58875.5
13601.67616 61086.7
13941.71806 63313.8
14281.75997 65556.1
14621.80187 67812.7
14961.84378 70083.2
15301.88568 72366.9
15641.92758 74663.1
15981.96949 76971.4
16322.01139 79291.2
16662.0533 81622
17002.0952 83963.3
17342.1371 86314.6
17682.17901 88675.4
18022.22091 91045.4
18362.26282 93424
18702.30472 95811
19042.34662 98205.9
19382.38853 100608
19722.43043 103018
20062.47234 105434
20402.51424 107857
20742.55614 110286
21082.59805 112721
21422.63995 115162
21762.68186 117608
22102.72376 120059
22442.76566 122514
22782.80757 124975
23122.84947 127439
23462.89138 129908
23802.93328 132380
24142.97518 134856
24483.01709 137335
24823.05899 139817
25163.1009 142303
25503.1428 144791
25843.1847 147281
26183.22661 149774
26523.26851 152270
26863.31042 154767
27203.35232 157266
27543.39422 159767
27883.43613 162270
28223.47803 164774
28563.51994 167279
28903.56184 169786
29753.6666 176056
30603.77136 182331
31453.87612 188609
32303.98088 194888
33154.08564 201166
34004.1904 207442
35704.39992 219984
37404.60944 232503
39104.81896 244992
40805.02848 257444
42505.238 269853
44205.44752 282214
45905.65704 294523
47605.86656 306775
49306.07608 318968
51006.2856 331099
54406.70464 355166
57807.12368 378963
61207.54272 402479
64607.96176 425709
68008.3808 448649
71408.79984 471298
74809.21888 493655
78209.63792 515723
81610.05696 537503
85010.476 558999
89260.9998 585475
93511.5236 611522
102012.5712 662361
110513.6188 711594
119014.6664 759299
127515.714 805555
136016.7616 850436
144517.8092 894016
153018.8568 936363
161519.9044 977541
170020.952 1.02E+06
187023.0472 1.09E+06
204025.1424 1.17E+06
221027.2376 1.24E+06
238029.3328 1.30E+06
255031.428 1.37E+06
272033.5232 1.43E+06
289035.6184 1.49E+06
306037.7136 1.54E+06
323039.8088 1.60E+06
340041.904 1.65E+06
357043.9992 1.70E+06
374046.0944 1.75E+06
391048.1896 1.80E+06
408050.2848 1.84E+06
425052.38 1.89E+06
442054.4752 1.93E+06
459056.5704 1.98E+06
476058.6656 2.02E+06
493060.7608 2.06E+06
510062.856 2.10E+06
544067.0464 2.17E+06
578071.2368 2.24E+06
612075.4272 2.31E+06
646079.6176 2.38E+06
680083.808 2.44E+06
714087.9984 2.50E+06
748092.1888 2.56E+06
782096.3792 2.61E+06
816100.5696 2.67E+06
850104.76 2.72E+06

View File

@ -1,268 +0,0 @@
0.026981539 1087.74
0.053963078 2175.49
0.134907695 5438.8
0.215852312 8557.19
0.26981539 10540.7
0.404723085 15079.2
0.53963078 19011.9
0.674538475 22467.9
0.80944617 25531.3
0.944353865 28303.5
1.07926156 30859.2
1.214169255 33253.7
1.34907695 35529.1
1.483984645 37685.6
1.61889234 39719.2
1.88870773 43505.2
2.15852312 46980.1
2.42833851 50199.6
2.6981539 53228.6
3.23778468 58941.2
3.77741546 64372.8
4.31704624 69606.4
4.85667702 74683.1
5.3963078 79618
6.74538475 91580.1
8.0944617 103093
9.44353865 114105
10.7926156 124746
12.14169255 135119
13.4907695 145269
16.1889234 165367
18.8870773 185754
21.5852312 206324
24.2833851 226926
26.981539 247688
33.72692375 300998
40.4723085 357029
47.21769325 416359
53.963078 478956
60.70846275 544719
67.4538475 613499
80.944617 759812
94.4353865 917732
107.926156 1.09E+06
121.4169255 1.27E+06
134.907695 1.46E+06
148.3984645 1.67E+06
161.889234 1.88E+06
175.3800035 2.11E+06
188.870773 2.35E+06
202.3615425 2.60E+06
215.852312 2.86E+06
229.3430815 3.13E+06
242.833851 3.41E+06
256.3246205 3.71E+06
269.81539 4.01E+06
296.796929 4.64E+06
323.778468 5.30E+06
350.760007 6.00E+06
377.741546 6.74E+06
404.723085 7.53E+06
431.704624 8.35E+06
458.686163 9.21E+06
485.667702 1.01E+07
512.649241 1.10E+07
539.63078 1.20E+07
566.612319 1.30E+07
593.593858 1.41E+07
620.575397 1.52E+07
647.556936 1.63E+07
674.538475 1.75E+07
728.501553 1.99E+07
782.464631 2.25E+07
836.427709 2.52E+07
890.390787 2.81E+07
944.353865 3.11E+07
1025.298482 3.59E+07
1106.243099 4.10E+07
1187.187716 4.64E+07
1268.132333 5.21E+07
1349.07695 5.81E+07
1483.984645 6.88E+07
1618.89234 8.02E+07
1753.800035 9.24E+07
1888.70773 1.05E+08
2023.615425 1.19E+08
2158.52312 1.34E+08
2293.430815 1.49E+08
2428.33851 1.65E+08
2563.246205 1.81E+08
2698.1539 1.98E+08
2833.061595 2.16E+08
2967.96929 2.35E+08
3102.876985 2.54E+08
3237.78468 2.73E+08
3372.692375 2.94E+08
3507.60007 3.15E+08
3642.507765 3.36E+08
3777.41546 3.58E+08
3912.323155 3.81E+08
4047.23085 4.04E+08
4182.138545 4.27E+08
4317.04624 4.52E+08
4451.953935 4.76E+08
4586.86163 5.02E+08
4721.769325 5.27E+08
4856.67702 5.54E+08
4991.584715 5.80E+08
5126.49241 6.08E+08
5261.400105 6.35E+08
5396.3078 6.64E+08
5666.12319 7.21E+08
5935.93858 7.81E+08
6205.75397 8.42E+08
6475.56936 9.04E+08
6745.38475 9.69E+08
7015.20014 1.03E+09
7285.01553 1.10E+09
7554.83092 1.17E+09
7824.64631 1.24E+09
8094.4617 1.31E+09
8364.27709 1.39E+09
8634.09248 1.46E+09
8903.90787 1.54E+09
9173.72326 1.61E+09
9443.53865 1.69E+09
9713.35404 1.77E+09
9983.16943 1.85E+09
10252.98482 1.93E+09
10522.80021 2.02E+09
10792.6156 2.10E+09
11062.43099 2.18E+09
11332.24638 2.27E+09
11602.06177 2.36E+09
11871.87716 2.44E+09
12141.69255 2.53E+09
12411.50794 2.62E+09
12681.32333 2.71E+09
12951.13872 2.80E+09
13220.95411 2.89E+09
13490.7695 2.99E+09
14030.40028 3.18E+09
14570.03106 3.37E+09
15109.66184 3.56E+09
15649.29262 3.76E+09
16188.9234 3.96E+09
16728.55418 4.16E+09
17268.18496 4.36E+09
17807.81574 4.57E+09
18347.44652 4.78E+09
18887.0773 4.99E+09
19426.70808 5.20E+09
19966.33886 5.41E+09
20505.96964 5.63E+09
21045.60042 5.85E+09
21585.2312 6.07E+09
22124.86198 6.29E+09
22664.49276 6.51E+09
23204.12354 6.74E+09
23743.75432 6.96E+09
24283.3851 7.19E+09
24823.01588 7.42E+09
25362.64666 7.65E+09
25902.27744 7.88E+09
26441.90822 8.11E+09
26981.539 8.34E+09
27521.16978 8.57E+09
28060.80056 8.81E+09
28600.43134 9.04E+09
29140.06212 9.28E+09
29679.6929 9.52E+09
30219.32368 9.75E+09
30758.95446 9.99E+09
31298.58524 1.02E+10
31838.21602 1.05E+10
32377.8468 1.07E+10
32917.47758 1.10E+10
33457.10836 1.12E+10
33996.73914 1.14E+10
34536.36992 1.17E+10
35076.0007 1.19E+10
35615.63148 1.22E+10
36155.26226 1.24E+10
36694.89304 1.27E+10
37234.52382 1.29E+10
37774.1546 1.31E+10
38313.78538 1.34E+10
38853.41616 1.36E+10
39393.04694 1.39E+10
39932.67772 1.41E+10
40472.3085 1.44E+10
41011.93928 1.46E+10
41551.57006 1.49E+10
42091.20084 1.51E+10
42630.83162 1.54E+10
43170.4624 1.56E+10
43710.09318 1.59E+10
44249.72396 1.61E+10
44789.35474 1.64E+10
45328.98552 1.66E+10
45868.6163 1.69E+10
47217.69325 1.75E+10
48566.7702 1.81E+10
49915.84715 1.87E+10
51264.9241 1.94E+10
52614.00105 2.00E+10
53963.078 2.06E+10
56661.2319 2.19E+10
59359.3858 2.31E+10
62057.5397 2.43E+10
64755.6936 2.56E+10
67453.8475 2.68E+10
70152.0014 2.80E+10
72850.1553 2.93E+10
75548.3092 3.05E+10
78246.4631 3.17E+10
80944.617 3.29E+10
86340.9248 3.53E+10
91737.2326 3.76E+10
97133.5404 4.00E+10
102529.8482 4.23E+10
107926.156 4.46E+10
113322.4638 4.68E+10
118718.7716 4.90E+10
124115.0794 5.12E+10
129511.3872 5.34E+10
134907.695 5.55E+10
141653.0798 5.82E+10
148398.4645 6.07E+10
161889.234 6.58E+10
175380.0035 7.07E+10
188870.773 7.54E+10
202361.5425 8.00E+10
215852.312 8.45E+10
229343.0815 8.88E+10
242833.851 9.30E+10
256324.6205 9.71E+10
269815.39 1.01E+11
296796.929 1.09E+11
323778.468 1.16E+11
350760.007 1.23E+11
377741.546 1.30E+11
404723.085 1.36E+11
431704.624 1.42E+11
458686.163 1.48E+11
485667.702 1.53E+11
512649.241 1.59E+11
539630.78 1.64E+11
566612.319 1.69E+11
593593.858 1.74E+11
620575.397 1.79E+11
647556.936 1.83E+11
674538.475 1.88E+11
701520.014 1.92E+11
728501.553 1.96E+11
755483.092 2.00E+11
782464.631 2.04E+11
809446.17 2.08E+11
863409.248 2.16E+11
917372.326 2.23E+11
971335.404 2.29E+11
1025298.482 2.36E+11
1079261.56 2.42E+11
1133224.638 2.48E+11
1187187.716 2.54E+11
1241150.794 2.59E+11
1295113.872 2.65E+11
1349076.95 2.70E+11

View File

@ -1,345 +0,0 @@
0.053103695 11959.9
0.116582129 19201.1
0.180060563 24466.2
0.243538998 28696
0.307017432 32395.8
0.370495866 35815.8
0.4339739 39049.4
0.497451133 42211.1
0.560932369 45315.6
0.624409603 48392.9
0.687886836 51473.4
0.751368072 54567.7
0.814845305 57693.8
0.878322539 60883.5
0.941803775 64073.2
1.005281008 67274.6
1.068758242 70625.6
1.132235475 73976.6
1.195716711 77327.7
1.259193944 80859
1.322671178 84405.9
1.386152414 87952.9
1.449629647 91666.6
1.513106881 95430.9
1.576588117 99195.1
1.64006535 103102
1.703542583 107097
1.767019817 111093
1.830501053 115200
1.893978286 119436
1.95745552 123672
2.020936756 128023
2.084413989 132632
2.147891222 137241
2.211372458 141849
2.274849692 146458
2.338326925 151067
2.401804159 155677
2.465285395 160793
2.528762628 165908
2.592239861 171023
2.655721097 176139
2.719198331 181254
2.782675564 186369
2.8461568 191841
2.909634034 197468
2.973111267 203094
3.0365885 208721
3.100069736 214347
3.16354697 219973
3.227024203 225800
3.290505439 231938
3.353982673 238075
3.417459906 244212
3.480941142 250349
3.544418375 256486
3.607895609 262668
3.671372842 269313
3.734854078 275958
3.798331312 282603
3.861808545 289248
3.925289781 295893
3.988767014 302538
4.05223224 309870
4.115713476 317394
4.179194712 324917
4.242675948 332441
4.306157184 339965
4.36963842 347488
4.433119656 355012
4.496600892 362535
4.560082128 370059
4.623563364 377583
4.6870446 385106
4.750525836 392630
4.813967046 400154
4.877448282 407677
4.940929518 415201
5.004410754 422747
5.06789199 431506
5.131373226 440265
5.194854462 449023
5.258335698 457782
5.321816934 466541
5.38529817 475299
5.448779406 484058
5.512260642 492817
5.575741878 501575
5.639223114 510334
5.70270435 519093
5.76614556 527851
5.829626796 536610
5.893108032 545369
5.956589268 554127
6.020070504 563195
6.08355174 573167
6.147032976 583139
6.210514212 593110
6.273995448 603082
6.337476684 613054
6.40095792 623026
6.464439156 632997
6.527920392 642969
6.591401628 652941
6.654842838 662913
6.718324074 672885
6.78180531 682856
6.845286546 692828
6.908767782 702800
6.972249018 712772
7.035730254 723331
7.09921149 734498
7.162692726 745666
7.226173962 756833
7.289655198 768000
7.353136434 779168
7.41661767 790335
7.480098906 801502
7.543540116 812670
7.607021352 823837
7.670502588 835004
7.733983824 846172
7.79746506 857339
7.860946296 868507
7.924427532 879674
7.987908768 890841
8.051390004 902868
8.11487124 915217
8.178352476 927566
8.241833712 939915
8.305314948 952263
8.368796184 964612
8.43227742 976961
8.49571863 989310
8.559199866 1.00E+06
8.622681102 1.01E+06
8.686162338 1.03E+06
8.749643574 1.04E+06
8.81312481 1.05E+06
8.876606046 1.06E+06
8.940087282 1.08E+06
9.003568518 1.09E+06
9.067049754 1.10E+06
9.13053099 1.12E+06
9.194012226 1.13E+06
9.257493462 1.14E+06
9.320974698 1.16E+06
9.384415908 1.17E+06
9.447897144 1.18E+06
9.51137838 1.20E+06
9.574859616 1.21E+06
9.638340852 1.22E+06
9.701822088 1.24E+06
9.765303324 1.25E+06
9.82878456 1.26E+06
9.892265796 1.28E+06
9.955747032 1.29E+06
10.01922827 1.30E+06
10.0827095 1.32E+06
10.14619074 1.34E+06
10.20967198 1.35E+06
10.27311319 1.37E+06
10.33659442 1.38E+06
10.40007566 1.40E+06
10.46355689 1.41E+06
10.52703813 1.43E+06
10.59051937 1.44E+06
10.6540006 1.46E+06
10.71748184 1.47E+06
10.78096307 1.49E+06
10.84444431 1.50E+06
10.90792555 1.52E+06
10.97140678 1.53E+06
11.03488802 1.55E+06
11.09836925 1.56E+06
11.16185049 1.58E+06
11.2252917 1.59E+06
11.28877294 1.61E+06
11.35225417 1.62E+06
11.41573541 1.64E+06
11.47921664 1.66E+06
11.54269788 1.67E+06
11.60617912 1.69E+06
11.66966035 1.70E+06
11.73314159 1.72E+06
11.79662282 1.73E+06
11.86010406 1.75E+06
11.9235853 1.76E+06
11.98706653 1.78E+06
12.05054777 1.79E+06
12.11398898 1.81E+06
12.17747021 1.83E+06
12.24095145 1.85E+06
12.30443269 1.86E+06
12.36791392 1.88E+06
12.43139516 1.90E+06
12.49487639 1.92E+06
12.55835763 1.93E+06
12.62183887 1.95E+06
12.6853201 1.97E+06
12.74880134 1.99E+06
12.81228257 2.00E+06
12.87576381 2.02E+06
12.93924505 2.04E+06
13.00268626 2.06E+06
13.06616749 2.07E+06
13.12964873 2.09E+06
13.19312996 2.11E+06
13.2566112 2.13E+06
13.32009244 2.14E+06
13.38357367 2.16E+06
13.44705491 2.18E+06
13.51053614 2.20E+06
13.57401738 2.22E+06
13.63749862 2.23E+06
13.70097985 2.25E+06
13.76446109 2.27E+06
13.82794232 2.29E+06
13.89142356 2.30E+06
13.95486477 2.32E+06
14.01834601 2.34E+06
14.08182724 2.36E+06
14.14530848 2.38E+06
14.20878971 2.40E+06
14.27227095 2.42E+06
14.33575219 2.44E+06
14.39923342 2.46E+06
14.46271466 2.48E+06
14.52619589 2.50E+06
14.58967713 2.52E+06
14.65315837 2.54E+06
14.7166396 2.56E+06
14.78012084 2.58E+06
14.84356205 2.60E+06
14.90704328 2.62E+06
14.97052452 2.63E+06
15.03400576 2.65E+06
15.09748699 2.67E+06
15.16096823 2.69E+06
15.22444946 2.71E+06
15.2879307 2.73E+06
15.35141194 2.75E+06
15.41489317 2.77E+06
15.47837441 2.79E+06
15.54185564 2.81E+06
15.60533688 2.83E+06
15.66881812 2.85E+06
15.73225933 2.87E+06
15.79574056 2.89E+06
15.8592218 2.91E+06
15.92270303 2.93E+06
15.98618427 2.95E+06
16.04966551 2.97E+06
16.11314674 2.99E+06
16.17662798 3.02E+06
16.24010921 3.04E+06
16.30359045 3.06E+06
16.36707169 3.08E+06
16.43055292 3.10E+06
16.49403416 3.13E+06
16.55751539 3.15E+06
16.6209566 3.17E+06
16.68443784 3.19E+06
16.74791908 3.21E+06
16.81140031 3.24E+06
16.87488155 3.26E+06
16.93836278 3.28E+06
17.00184402 3.30E+06
17.06532526 3.32E+06
17.12880649 3.35E+06
17.19228773 3.37E+06
17.25576896 3.39E+06
17.3192502 3.41E+06
17.38273144 3.43E+06
17.44621267 3.46E+06
17.50969391 3.48E+06
17.57313512 3.50E+06
17.63661635 3.52E+06
17.70009759 3.54E+06
17.76357883 3.57E+06
17.82706006 3.59E+06
17.8905413 3.61E+06
17.95402253 3.63E+06
18.01750377 3.65E+06
18.08098501 3.68E+06
18.14446624 3.70E+06
18.20794748 3.73E+06
18.27142871 3.75E+06
18.33490995 3.78E+06
18.39839119 3.80E+06
18.4618324 3.82E+06
18.52531363 3.85E+06
18.58879487 3.87E+06
18.6522761 3.90E+06
18.71575734 3.92E+06
18.77923858 3.95E+06
18.84271981 3.97E+06
18.90620105 3.99E+06
18.96968228 4.02E+06
19.03316352 4.04E+06
19.09664476 4.07E+06
19.16012599 4.09E+06
19.22360723 4.11E+06
19.28708846 4.14E+06
19.35052967 4.16E+06
19.41401091 4.19E+06
19.47749215 4.21E+06
19.54097338 4.24E+06
19.60445462 4.26E+06
19.66793585 4.28E+06
19.73141709 4.31E+06
19.79489833 4.33E+06
19.85837956 4.36E+06
19.9218608 4.38E+06
19.98534203 4.41E+06
20.04882327 4.43E+06
20.11230451 4.46E+06
20.17578574 4.48E+06
20.23926698 4.51E+06
20.30270819 4.54E+06
20.36618942 4.56E+06
20.42967066 4.59E+06
20.4931519 4.62E+06
20.55663313 4.64E+06
20.62011437 4.67E+06
20.6835956 4.69E+06
20.74707684 4.72E+06
20.81055808 4.75E+06
20.87403931 4.77E+06
20.93752055 4.80E+06
21.00100178 4.83E+06
21.06448302 4.85E+06
21.12796426 4.88E+06
21.19140547 4.91E+06
21.2548867 4.93E+06
21.31836794 4.96E+06
21.38184917 4.98E+06
21.44533041 5.01E+06
21.50881165 5.04E+06
21.57229288 5.06E+06
21.63577412 5.09E+06
21.69925535 5.12E+06
21.76273659 5.14E+06
21.82621783 5.17E+06
21.88969906 5.20E+06

View File

@ -1,268 +0,0 @@
0.00100784 0.00455783
0.00201568 0.00911567
0.0050392 0.0197891
0.00806272 0.0284591
0.0100784 0.0336328
0.0151176 0.0449321
0.0201568 0.0545806
0.025196 0.0631952
0.0302352 0.071111
0.0352744 0.0785363
0.0403136 0.0856119
0.0453528 0.0924397
0.050392 0.0990962
0.0554312 0.105641
0.0604704 0.112122
0.0705488 0.125041
0.0806272 0.138091
0.0907056 0.151435
0.100784 0.16519
0.1209408 0.194217
0.1410976 0.225513
0.1612544 0.25917
0.1814112 0.295144
0.201568 0.333333
0.25196 0.4377
0.302352 0.55345
0.352744 0.679377
0.403136 0.814707
0.453528 0.958947
0.50392 1.11177
0.604704 1.44231
0.705488 1.80513
0.806272 2.19946
0.907056 2.62475
1.00784 3.08057
1.2598 4.35139
1.51176 5.80613
1.76372 7.44108
2.01568 9.25315
2.26764 11.2397
2.5196 13.3984
3.02352 18.2246
3.52744 23.7179
4.03136 29.8671
4.53528 36.6625
5.0392 44.0961
5.54312 52.1607
6.04704 60.8501
6.55096 70.1587
7.05488 80.0814
7.5588 90.6136
8.06272 101.751
8.56664 113.49
9.07056 125.827
9.57448 138.759
10.0784 152.267
11.08624 180.081
12.09408 209.992
13.10192 241.974
14.10976 276.006
15.1176 312.066
16.12544 350.134
17.13328 390.189
18.14112 432.214
19.14896 476.19
20.1568 522.101
21.16464 569.93
22.17248 619.661
23.18032 671.279
24.18816 724.77
25.196 780.118
27.21168 896.334
29.22736 1019.82
31.24304 1150.48
33.25872 1288.2
35.2744 1432.91
38.29792 1662.88
41.32144 1908.07
44.34496 2168.23
47.36848 2443.1
50.392 2732.43
55.4312 3246.18
60.4704 3798.47
65.5096 4388.33
70.5488 5014.87
75.588 5677.25
80.6272 6374.65
85.6664 7106.3
90.7056 7871.46
95.7448 8669.43
100.784 9499.52
105.8232 10361.1
110.8624 11253.5
115.9016 12176.2
120.9408 13128.5
125.98 14109.9
131.0192 15119.8
136.0584 16157.8
141.0976 17223.3
146.1368 18315.7
151.176 19434.7
156.2152 20579.8
161.2544 21750.4
166.2936 22946.2
171.3328 24166.7
176.372 25411.6
181.4112 26680.3
186.4504 27972.5
191.4896 29287.8
196.5288 30625.8
201.568 31986.2
211.6464 34772.7
221.7248 37644.4
231.8032 40598.6
241.8816 43632.8
251.96 46744.7
262.0384 49931.8
272.1168 53192
282.1952 56523.1
292.2736 59923.1
302.352 63390
312.4304 66921.8
322.5088 70516.9
332.5872 74173.4
342.6656 77889.7
352.744 81664
362.8224 85494.9
372.9008 89380.9
382.9792 93320.4
393.0576 97312.1
403.136 101355
413.2144 105447
423.2928 109587
433.3712 113774
443.4496 118007
453.528 122284
463.6064 126605
473.6848 130969
483.7632 135373
493.8416 139818
503.92 144303
524.0768 153386
544.2336 162615
564.3904 171984
584.5472 181485
604.704 191113
624.8608 200861
645.0176 210724
665.1744 220697
685.3312 230775
705.488 240953
725.6448 251226
745.8016 261591
765.9584 272043
786.1152 282578
806.272 293192
826.4288 303883
846.5856 314646
866.7424 325478
886.8992 336377
907.056 347338
927.2128 358361
947.3696 369441
967.5264 380577
987.6832 391765
1007.84 403003
1027.9968 414290
1048.1536 425622
1068.3104 436998
1088.4672 448416
1108.624 459874
1128.7808 471370
1148.9376 482902
1169.0944 494468
1189.2512 506067
1209.408 517698
1229.5648 529358
1249.7216 541047
1269.8784 552762
1290.0352 564502
1310.192 576267
1330.3488 588055
1350.5056 599864
1370.6624 611694
1390.8192 623543
1410.976 635410
1431.1328 647295
1451.2896 659195
1471.4464 671111
1491.6032 683041
1511.76 694984
1531.9168 706940
1552.0736 718907
1572.2304 730885
1592.3872 742872
1612.544 754869
1632.7008 766874
1652.8576 778887
1673.0144 790907
1693.1712 802933
1713.328 814964
1763.72 845063
1814.112 875184
1864.504 905318
1914.896 935457
1965.288 965594
2015.68 995721
2116.464 1.06E+06
2217.248 1.12E+06
2318.032 1.18E+06
2418.816 1.24E+06
2519.6 1.30E+06
2620.384 1.35E+06
2721.168 1.41E+06
2821.952 1.47E+06
2922.736 1.53E+06
3023.52 1.59E+06
3225.088 1.70E+06
3426.656 1.82E+06
3628.224 1.93E+06
3829.792 2.04E+06
4031.36 2.15E+06
4232.928 2.26E+06
4434.496 2.37E+06
4636.064 2.48E+06
4837.632 2.58E+06
5039.2 2.68E+06
5291.16 2.81E+06
5543.12 2.94E+06
6047.04 3.18E+06
6550.96 3.42E+06
7054.88 3.64E+06
7558.8 3.87E+06
8062.72 4.08E+06
8566.64 4.29E+06
9070.56 4.49E+06
9574.48 4.69E+06
10078.4 4.88E+06
11086.24 5.25E+06
12094.08 5.61E+06
13101.92 5.94E+06
14109.76 6.26E+06
15117.6 6.57E+06
16125.44 6.86E+06
17133.28 7.14E+06
18141.12 7.41E+06
19148.96 7.67E+06
20156.8 7.93E+06
21164.64 8.17E+06
22172.48 8.41E+06
23180.32 8.63E+06
24188.16 8.86E+06
25196 9.07E+06
26203.84 9.28E+06
27211.68 9.48E+06
28219.52 9.68E+06
29227.36 9.87E+06
30235.2 1.01E+07
32250.88 1.04E+07
34266.56 1.08E+07
36282.24 1.11E+07
38297.92 1.14E+07
40313.6 1.17E+07
42329.28 1.20E+07
44344.96 1.23E+07
46360.64 1.25E+07
48376.32 1.28E+07
50392 1.30E+07

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -13,8 +13,8 @@ Int_t colors[40] = {
#include "Armory/ClassPW.h"
#include "Armory/HistPlotter.h"
#include "Armory/SX3Geom.h"
#include "scratch/sx3z_vs_phiz/testmodel.h"
#include "scratch/test_eloss.h"
#include "Armory/PC_StepLadder_Correction.h"
#include "Armory/Kinematics.h"
#include <TH2.h>
#include <TF1.h>
#include <TStyle.h>
@ -38,6 +38,7 @@ Int_t colors[40] = {
#include <algorithm>
bool realtime = true;
bool process_alpha_proton_scattering = true;
double source_vertex = 53; //53
const double qqq_z = 100.0;
const double anode_gain = 1.5146e-5; //channels --> MeV
@ -58,6 +59,7 @@ TPolyLine3D *qqqw[16][4]={NULL};
TPolyLine3D *trajectory=NULL;
TGraph2D *qqqg=NULL, *crossoverg=NULL, *guessg=NULL;
double z_to_crossover_rho(double z) {
return 9.20645e-5*z*z + 34.1973;
}
@ -113,6 +115,9 @@ bool HitNonZero;
bool sx3ecut;
bool qqqEcut;
void protonAlphaHistograms(HistPlotter* plotter, std::vector<Event> QQQ_Events, std::vector<Event> SX3_Events, std::vector<Event> PC_Events);
void MakeVertex::Begin(TTree * /*tree*/)
{
pcfix_func.SetNpx(100000);
@ -176,7 +181,7 @@ void MakeVertex::Begin(TTree * /*tree*/)
}
else
{
std::cerr << "Error opening slope_intercept.txt" << std::endl;
std::cerr << "Error opening slope_intercept.dat" << std::endl;
}
// ... (Load QQQ Gains and Calibs - same as before) ...
@ -236,11 +241,12 @@ void MakeVertex::Begin(TTree * /*tree*/)
}
infile.close();
}
MeV_to_cm = new TGraph("ELoss/alpha_lookup_20MeV.dat","%lf %*lf %lf");
// MeV_to_cm = new TGraph("eloss_calculations/alphas_in_250torr_mix_filtered_6MeV.txt","%lf %*lf %lf");
MeV_to_cm = new TGraph("eloss_calculations/alpha_lookup_20MeV.dat","%lf %*lf %lf");
cm_to_MeV= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
MeV_to_cm_p = new TGraph("ELoss/proton_lookup_20MeV.dat","%lf %*lf %lf");
cm_to_MeVp= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
MeV_to_cm_p = new TGraph("eloss_calculations/proton_lookup_20MeV.dat","%lf %*lf %lf");
cm_to_MeVp= new TGraph(MeV_to_cm_p->GetN(), MeV_to_cm_p->GetY(), MeV_to_cm_p->GetX());
//cm_to_MeV.Eval(MeV_to_cm.Eval(detectedE)-PathLength) gives energy of particle before it traversed 'path length'
@ -391,17 +397,17 @@ Bool_t MakeVertex::Process(Long64_t entry)
bool no_charge_sharing_strict = det.valid_front_chans.size()==1 && det.valid_back_chans.size()==1;
if(det.valid) {
//std::cout << det.frontEL << " " << det.frontEL*sx3RightGain[id][det.stripF] << std::endl;
plotter->Fill2D("be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_b"+std::to_string(det.stripB),200,-1,1,800,0,8192,
det.frontX,det.backE,"evsx");
//plotter->Fill2D("be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_b"+std::to_string(det.stripB),200,-1,1,800,0,8192,det.frontX,det.backE,"evsx");
//std::cout << sx3BackGain[id][det.stripF][det.stripB] << " " << sx3FrontGain[id][det.stripF] << std::endl;
plotter->Fill2D("matched_be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),200,-60,60,800,0,8192,
det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF],det.backE*sx3BackGain[id][det.stripF][det.stripB],"evsx_matched");
//plotter->Fill2D("fe_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_"+std::to_string(det.stripB),200,-1,1,800,0,4096,det.frontX,det.backE,"evsx");
plotter->Fill2D("l_vs_r_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),800,0,4096,800,0,4096,det.frontEL,det.frontER,"l_vs_r");
//plotter->Fill2D("l_vs_r_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),800,0,4096,800,0,4096,det.frontEL,det.frontER,"l_vs_r");
}
if(det.valid && (id ==9 || id==7 || id == 1 || id==3) && det.stripF!=DEFAULT_NULL && det.stripB!=DEFAULT_NULL) {
double z = det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF];
z = z+(75.0/2.0)-3.0;//convert local sx3z to detector global coordinate system as indicated by measurements.
// Note that this will be different for the upstream barrel, when it gets implemented
double backE = det.backE*sx3BackGain[id][det.stripF][det.stripB];
//if(backE<2000) continue;
det.stripF=3-det.stripF;
@ -409,22 +415,25 @@ Bool_t MakeVertex::Process(Long64_t entry)
double phi_n = ((-id+0.5)*30+beta_n);
phi_n+=45;
if(getenv("flip180")) {
if(std::string(getenv("flip180"))=="1") {
//if(getenv("flip180")) {
// if(std::string(getenv("flip180"))=="1") {
//if(dataset=="17F")
phi_n+=180;//run 37 in 17F-->
}
}
// phi_n+=180;//run 37 in 17F-->
//}
//}
phi_n*=M_PI/180.; //starting-position phi + strip contribution
Event sx3ev(TVector3(88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n),z),backE*0.001,-1,det.ts,-1,det.stripB+4*id,det.stripF+4*id);
SX3_Events.push_back(sx3ev);
plotter->Fill2D("sx3backs_gm",100,0,100,800,0,8192,det.stripB+4*id,backE);
plotter->Fill2D("sx3backs_raw",100,0,100,800,0,8192,det.stripB+4*id,det.backE);
//plotter->Fill2D("SX3CartesianPlot", 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
plotter->Fill2D("SX3CartesianPlot" + std::to_string(id), 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
}
if(det.valid && det.stripF!=DEFAULT_NULL && det.stripB!=DEFAULT_NULL) {
plotter->Fill2D("sx3backs_raw",100,0,100,800,0,8192,det.stripB+4*id,det.backE);
}
}
}
//return kTRUE;
@ -564,7 +573,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
if (pc.index[k] >= 24 && pc.e[k] > 10) {
if (tRing - static_cast<double>(pc.t[k]) < -200) PCCQQQTimeCut = true;
//if (tRing - static_cast<double>(pc.t[k]) > 200) PCCQQQTimeCut = true;
plotter->Fill2D("Timing_Difference_QQQ_PC_Cathode", 500, -2000, 2000, 16, 0, 16, tRing - static_cast<double>(pc.t[k]), chRing, "hTiming");
}
} //end of pc k loop
@ -574,7 +582,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
//double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
double theta = 2 * TMath::Pi() * (-qqq.id[i] * 16 + (15-chWedge) + 0.5)/(16*4);
double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
double x = rho * TMath::Cos(theta);
double y = rho * TMath::Sin(theta);
hitPos.SetXYZ(x, y, qqq_z);
@ -591,9 +598,9 @@ Bool_t MakeVertex::Process(Long64_t entry)
PCQQQTimeCut = PCAQQQTimeCut && PCCQQQTimeCut;
plotter->Fill1D("QQQ_Multiplicity", 10, 0, 10, qqqCount, "hRawQQQ");
typedef std::unordered_map<int,std::tuple<int,double,double>> WireEvent; //this stores nearest neighbour wire events, or a 'cluster'
WireEvent aWireEvents, cWireEvents; //naming for book keeping
aWireEvents.clear();
aWireEvents.reserve(24);
if(realtime) {
@ -752,91 +759,11 @@ Bool_t MakeVertex::Process(Long64_t entry)
}
//Sidetrack for a(p,p)
std::string aplabel = "a(p,p)";
for(auto qqqevent: QQQ_Events) {
for(auto sx3event:SX3_Events) {
plotter->Fill1D("qqq_sx3_dt",1024,-4000,4000,qqqevent.Time1-sx3event.Time1,aplabel);
if(TMath::Abs(qqqevent.Time1-sx3event.Time1)>300) continue;
plotter->Fill1D("qqq_sx3_dt_timecut",1024,-4000,4000,qqqevent.Time1-sx3event.Time1,aplabel);
plotter->Fill1D("qqq_sx3_dphi",180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,aplabel);
plotter->Fill2D("qqq_sx3_matrix",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
for(auto pcevent: PC_Events) {
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
TVector3 x1(qqqevent.pos);
TVector3 v = x2f-x1;
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
double sinTheta_customV = TMath::Sin((qqqevent.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
//double sinTheta = TMath::Sin((qqqevent.pos - pcevent.pos).Theta());
//plotter->Fill2D("sinTheta2_vs_sinTheta",80,-2,2,80,-2,2,sinTheta,sinTheta_customV,aplabel);
// plotter->Fill2D("dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1,aplabel);
// plotter->Fill2D("dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2,aplabel);
// plotter->Fill2D("dE_E_AnodeQQQ",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1,aplabel);
// plotter->Fill2D("dE_E_CathodeQQQ",400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2,aplabel);
// plotter->Fill2D("dE3_E_AnodeQQQ",400,0,10,400,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,aplabel);
// plotter->Fill2D("dE3_E_CathodeQQQ",400,0,10,400,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV,aplabel);
// plotter->Fill2D("dPhi_QQQ_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
// plotter->Fill2D("dPhi_SX3_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,sx3event.pos.Phi()*180/M_PI,aplabel);
// plotter->Fill1D("dt_Anode_QQQ",600,-2000,2000,pcevent.Time1-qqqevent.Time1,aplabel);
// plotter->Fill1D("dt_Cathode_QQQ",600,-2000,2000,pcevent.Time2-qqqevent.Time1,aplabel);
// plotter->Fill1D("dt_Anode_SX3",600,-2000,2000,pcevent.Time1-sx3event.Time1,aplabel);
// plotter->Fill1D("dt_Cathode_SX3",600,-2000,2000,pcevent.Time2-sx3event.Time1,aplabel);
// plotter->Fill1D("pczfix",600,-300,300,pcz_fix,aplabel);
// plotter->Fill1D("pcz",600,-300,300,pcevent.pos.Z(),aplabel);
double path_length_q = (qqqevent.pos-TVector3(0,0,r_rhoMin_fix.Z())).Mag()*0.1;
double path_length_s = (sx3event.pos-TVector3(0,0,r_rhoMin_fix.Z())).Mag()*0.1;
/*
We know that alphas predominantly are detected in QQQs, and protons in SX3s, and that protons don't leave much of a trace in dE layer.
Using the estimated path lengths, we correct alpha eloss in qqq, and protons in sx3. The result should (hopefully be) vertex independent.
*/
double qqqEfix = cm_to_MeV->Eval(MeV_to_cm->Eval(qqqevent.Energy1)-path_length_q);
double sx3Efix = cm_to_MeVp->Eval(MeV_to_cm_p->Eval(sx3event.Energy1)-path_length_s);
plotter->Fill2D("qqqEf_sx3E_matrix_all",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
if(pcevent.multi1==1 && pcevent.multi2==2 && TMath::Abs(r_rhoMin_fix.Z())<200) { //one-anode, two-cathode events, as originally intended
plotter->Fill1D("VertexReconZ",400,-200,200,r_rhoMin_fix.Z(),aplabel);
plotter->Fill2D("VertexReconXY",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
plotter->Fill2D("qqqEf_sx3E_matrix",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
//plotter->Fill2D("dE3_Ef_AnodeQQQ_a1c2",400,0,10,400,0,40000,qqqEfix,pcevent.Energy1*sinTheta_customV,aplabel);
//plotter->Fill2D("dE3_Ef_CathodeQQQ_a1c2",400,0,10,400,0,10000,qqqEfix,pcevent.Energy2*sinTheta_customV,aplabel);
}
}
}
} //end sidetrack a(p,p)
if(process_alpha_proton_scattering) {
protonAlphaHistograms(plotter,QQQ_Events,SX3_Events,PC_Events);
//return kTRUE;
}//end if(process_alpha_proton_scattering)
/*for(auto sx3event: SX3_Events) {
for(int i=0; i<24; i++) {
if(aWireEvents.find(i) != aWireEvents.end()) {
auto awire = aWireEvents[i];
if(sx3event.Time1 -(double)std::get<2>(awire)< -100) {
plotter->Fill2D("sx3_z_phi2_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
plotter->Fill2D("sx3_z_strip#_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2);
//std::cout << sx3event.pos.Z() << " " << std::get<0>(awire) << " " << std::get<0>(awire) - sx3event.Time1 << std::endl;
}
}
if(cWireEvents.find(i) != cWireEvents.end()) {
auto cwire = cWireEvents[i];
if(sx3event.Time1 -(double)std::get<2>(cwire) < -100) {
plotter->Fill2D("sx3_z_phi2_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
plotter->Fill2D("sx3_z_strip#_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2 );
}
}
}
}*/
if(QQQ_Events.size() && PC_Events.size())
plotter->Fill2D("PCEv_vs_QQQEv",20,0,20,20,0,20,QQQ_Events.size(),PC_Events.size());
@ -853,6 +780,51 @@ Bool_t MakeVertex::Process(Long64_t entry)
plotter->Fill2D("ac_vs_cc_ign0",20,0,20,20,0,20,aClusters.size(),cClusters.size(),"wiremult");
}
for(auto sx3event: SX3_Events) {
for(int i=0; i<24; i++) {
if(aWireEvents.find(i) != aWireEvents.end()) {
auto awire = aWireEvents[i];
if(sx3event.Time1 -(double)std::get<2>(awire)< -150) {
//plotter->Fill2D("sx3_z_phi2_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
//plotter->Fill2D("sx3_z_strip#_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2);
plotter->Fill2D("onewire_dEa_Esx3_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,sx3event.Energy1,std::get<1>(awire));
plotter->Fill2D("onewire_aNum_sx3Phi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,sx3event.pos.Phi()*180./M_PI);
}
}
if(cWireEvents.find(i) != cWireEvents.end()) {
auto cwire = cWireEvents[i];
if(sx3event.Time1 -(double)std::get<2>(cwire) < -150) {
//plotter->Fill2D("sx3_z_phi2_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
//plotter->Fill2D("sx3_z_strip#_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2 );
plotter->Fill2D("onewire_dEc_Esx3_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,sx3event.Energy1,std::get<1>(cwire));
plotter->Fill2D("onewire_cNum_sx3Phi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,sx3event.pos.Phi()*180./M_PI);
}
}
}//for 'i' loop
}
for(auto qqqevent: QQQ_Events) {
for(int i=0; i<24; i++) {
if(aWireEvents.find(i) != aWireEvents.end()) {
auto awire = aWireEvents[i];
if(qqqevent.Time1 -(double)std::get<2>(awire)< -150) {
plotter->Fill2D("onewire_dEa_Eqqq_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,qqqevent.Energy1,std::get<1>(awire));
plotter->Fill2D("onewire_aNum_QQQPhi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,qqqevent.pos.Phi()*180./M_PI);
}
}
if(cWireEvents.find(i) != cWireEvents.end()) {
auto cwire = cWireEvents[i];
if(qqqevent.Time1 -(double)std::get<2>(cwire) < -150) {
plotter->Fill2D("onewire_dEc_Eqqq_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,qqqevent.Energy1,std::get<1>(cwire));
plotter->Fill2D("onewire_cNum_QQQPhi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,qqqevent.pos.Phi()*180./M_PI);
}
}
}//for 'i' loop
}
for(auto pcevent:PC_Events) {
if(aClusters.size()==1 && cClusters.size() == 1) {
//plotter->Fill1D("pcz_a"+std::to_string(aClusters.at(0).size())+"_c"+std::to_string(cClusters.at(0).size()),800,-200,200,pcevent.pos.Z(),"wiremult");
@ -864,8 +836,8 @@ Bool_t MakeVertex::Process(Long64_t entry)
PCSX3TimeCut=false;
for(auto sx3event:SX3_Events) {
plotter->Fill1D("dt_pcA_sx3B"+std::to_string(sx3event.ch2),1024,-4000,4000,sx3event.Time1 - pcevent.Time1,"hTiming");
plotter->Fill1D("dt_pcC_sx3B"+std::to_string(sx3event.ch2),1024,-4000,4000,sx3event.Time1 - pcevent.Time2,"hTiming");
plotter->Fill1D("dt_pcA_sx3B"+std::to_string(sx3event.ch2),640,-2000,2000,sx3event.Time1 - pcevent.Time1,"hTiming");
plotter->Fill1D("dt_pcC_sx3B"+std::to_string(sx3event.ch2),640,-2000,2000,sx3event.Time1 - pcevent.Time2,"hTiming");
if(sx3event.Time1 - pcevent.Time1 < 0)//-150 for alphas
PCASX3TimeCut = 1;
if(sx3event.Time1 - pcevent.Time2 < 0)//-200 for alphas
@ -874,28 +846,30 @@ Bool_t MakeVertex::Process(Long64_t entry)
bool phicut = sx3event.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && sx3event.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
plotter->Fill1D("dt_pcA_sx3B",1024,-4000,4000,sx3event.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_sx3B",1024,-4000,4000,sx3event.Time1 - pcevent.Time2);
plotter->Fill2D("dt_pcA_vs_sx3RE",1024,-4000,4000,400,0,10,sx3event.Time1-pcevent.Time1, sx3event.Energy1);
plotter->Fill2D("dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2);
plotter->Fill1D("dt_pcA_sx3B",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_sx3B",640,-2000,2000,sx3event.Time1 - pcevent.Time2);
plotter->Fill2D("dt_pcA_vs_sx3RE",640,-2000,2000,400,0,30,sx3event.Time1-pcevent.Time1, sx3event.Energy1);
plotter->Fill2D("dE_E_Anodesx3B",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_Cathodesx3B",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_Anodesx3B_a1c2",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_Cathodesx3B_a1c2",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_Anodesx3B_a2c1",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_Cathodesx3B_a2c1",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
plotter->Fill2D("sx3phi_vs_pcphi"+std::to_string(sx3event.Time1 - pcevent.Time1<-150),100,-360,360,100,-360,360,sx3event.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
if(PCSX3TimeCut) {
plotter->Fill1D("dt_pcA_sx3B_timecut",1024,-4000,4000,sx3event.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_sx3B_timecut",1024,-4000,4000,sx3event.Time1 - pcevent.Time2);
plotter->Fill1D("dt_pcA_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time2);
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,sx3event.pos.X(),sx3event.pos.Y());
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,pcevent.pos.X(),pcevent.pos.Y());
plotter->Fill2D("pcz_vs_pcphi_TimeCut",600,-200,200,120,-360,360,pcevent.pos.Z(),pcevent.pos.Phi()*180/M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
}
double sx3rho = 88.0;//approximate barrel radius
double sx3z = sx3event.pos.Z()+(75.0/2.0)-3.0; //w.r.t target origin at 90 for run12
double sx3z = sx3event.pos.Z(); //w.r.t target origin at 90 for run12
double pcz = pcevent.pos.Z();
double calcsx3theta = TMath::ATan2(sx3rho-z_to_crossover_rho(pcz),sx3z-pcz);
plotter->Fill2D("dE2_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*TMath::Sin(calcsx3theta));
plotter->Fill2D("dE2_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*TMath::Sin(calcsx3theta));
plotter->Fill2D("dE2_E_Anodesx3B",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*TMath::Sin(calcsx3theta));
plotter->Fill2D("dE2_E_Cathodesx3B",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*TMath::Sin(calcsx3theta));
double sx3theta = TMath::ATan2(sx3rho,sx3z-source_vertex);
@ -912,13 +886,13 @@ Bool_t MakeVertex::Process(Long64_t entry)
plotter->Fill2D("pcz_vs_time",2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
plotter->Fill2D("pcphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,pcevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
//plotter->Fill2D("pcz_vs_time_strip"+std::to_string(sx3event.ch2),2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
plotter->Fill2D("sx3phi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,sx3event.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
plotter->Fill2D("pcz_vs_sx3pczguess",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
if(pcevent.multi1==1 && pcevent.multi2==2) {
//if(pcevent.multi1==1) {
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
@ -932,12 +906,12 @@ Bool_t MakeVertex::Process(Long64_t entry)
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2_strip"+std::to_string(sx3event.ch2),300,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
double sinTheta_customV = TMath::Sin((sx3event.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
plotter->Fill2D("dE3_E_CathodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
plotter->Fill2D("dE3_E_AnodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
}
}
if(pcevent.multi1==1 && pcevent.multi2==3) {
@ -981,8 +955,8 @@ Bool_t MakeVertex::Process(Long64_t entry)
plotter->Fill1D("pcz_sx3Coinc_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,sx3z);
plotter->Fill2D("pcz_vs_sx3z_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,600,-400,400,sx3z,pcevent.pos.Z());
//plotter->Fill2D("sx3E_vs_sx3z"+std::to_string(sx3event.ch2),400,0,10,300,0,200,sx3event.Energy1,sx3z);
plotter->Fill2D("sx3E_vs_sx3z",400,0,10,300,0,200,sx3event.Energy1,sx3z);
//plotter->Fill2D("sx3E_vs_sx3z"+std::to_string(sx3event.ch2),400,0,30,300,0,200,sx3event.Energy1,sx3z);
plotter->Fill2D("sx3E_vs_sx3z",400,0,30,300,0,200,sx3event.Energy1,sx3z);
plotter->Fill2D("pcdEA_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy1,sx3z);
plotter->Fill2D("pcdEC_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy2,sx3z);
@ -1005,7 +979,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
}
}//end PC-SX3 coincidence
for(size_t ii=0; ii<QQQ_Events.size(); ii++) {
/*for(size_t ii=0; ii<QQQ_Events.size(); ii++) {
for(size_t jj=ii+1; jj<QQQ_Events.size(); jj++) {
//if(TMath::Abs(QQQ_Events.at(ii).pos.Phi()*180/M_PI-QQQ_Events.at(jj).pos.Phi()*180/M_PI)>20) continue;
if(QQQ_Events.at(ii).ch1 == QQQ_Events.at(jj).ch1) continue;
@ -1016,32 +990,31 @@ Bool_t MakeVertex::Process(Long64_t entry)
if(QQQ_Events.at(ii).ch2 == QQQ_Events.at(jj).ch2+1) continue;
double dt = QQQ_Events.at(ii).Time1-QQQ_Events.at(jj).Time1;
plotter->Fill1D("dt_qqqi_qqqj",1024,-4000,4000,dt);
plotter->Fill1D("dt_qqqi_qqqj",800,-2000,2000,dt);
if(TMath::Abs(dt) > 150) continue;
plotter->Fill1D("dt_qqqi_qqqj_coinc",1024,-4000,4000,dt);
plotter->Fill1D("dt_qqqi_qqqj_coinc",800,-2000,2000,dt);
double sum_e = QQQ_Events.at(ii).Energy1+QQQ_Events.at(jj).Energy1;
plotter->Fill2D("sum_qqqE",400,0,10,400,0,10,QQQ_Events.at(ii).Energy1,sum_e);
plotter->Fill2D("qqq_matrix",400,0,10,400,0,10,QQQ_Events.at(ii).Energy1,QQQ_Events.at(jj).Energy1);
plotter->Fill2D("qqq_matrix",400,0,10,400,0,10,QQQ_Events.at(jj).Energy1,QQQ_Events.at(ii).Energy1);
plotter->Fill2D("sum_qqqE",400,0,30,400,0,30,QQQ_Events.at(ii).Energy1,sum_e);
plotter->Fill2D("qqq_matrix",400,0,30,400,0,30,QQQ_Events.at(ii).Energy1,QQQ_Events.at(jj).Energy1);
plotter->Fill2D("qqq_matrix",400,0,30,400,0,30,QQQ_Events.at(jj).Energy1,QQQ_Events.at(ii).Energy1);
plotter->Fill2D("qqq_ch2_ch2",400,0,400,400,0,400,QQQ_Events.at(jj).ch2,QQQ_Events.at(ii).ch2);
plotter->Fill2D("qqq_ch1_ch1",400,0,400,400,0,400,QQQ_Events.at(jj).ch1,QQQ_Events.at(ii).ch1);
if(sum_e > 6.50 && sum_e < 7.50) {
plotter->Fill2D("qqq_ang1_ang2",180,-360,360,180,-360,360,QQQ_Events.at(jj).pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
//if(PC_Events.size()<2) continue;
/*for(auto pcevent: PC_Events) {
for(auto pcevent: PC_Events) {
plotter->Fill2D("pcphi_vs_qqqphi_i_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
plotter->Fill2D("pcphi_vs_qqqphi_j_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(jj).pos.Phi()*180/M_PI);
}
}
}
}*/
}
}
}
for(auto pcevent: PC_Events) {
for(auto qqqevent: QQQ_Events) {
plotter->Fill1D("dt_pcA_qqqR",1024,-4000,4000,qqqevent.Time1 - pcevent.Time1);
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE",1024,-4000,4000,400,0,10,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
plotter->Fill1D("dt_pcC_qqqW",1024,-4000,4000,qqqevent.Time2 - pcevent.Time2);
plotter->Fill1D("dt_pcA_qqqR",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE",640,-2000,2000,400,0,30,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
plotter->Fill1D("dt_pcC_qqqW",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
plotter->Fill2D("phiPC_vs_phiQQQ",180,-360,360,180,-360,360,qqqevent.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
double sinTheta = TMath::Sin((qqqevent.pos - TVector3(0,0,source_vertex)).Theta());///TMath::Sin((TVector3(51.5,0,128.) - TVector3(0,0,85)).Theta());
@ -1051,56 +1024,40 @@ Bool_t MakeVertex::Process(Long64_t entry)
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
TVector3 r_rhoMin = x1 + t_minimum*v;
/*if((qqqevent.pos - r_rhoMin).Theta()*180/M_PI > 52) {
plotter->Fill2D("dE3_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,"customVertex");
plotter->Fill2D("dE3_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV,"customVertex");
} else {
plotter->Fill2D("dE3_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,"customVertex");
plotter->Fill2D("dE3_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV,"customVertex");
}*/
//bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
bool lowercut_cath = pcevent.Energy2*sinTheta < 250 && (qqqevent.Energy2 < 5.0 || qqqevent.Energy1 < 5.0) ;
bool phicut = qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
if(lowercut_cath && phicut) {
plotter->Fill1D("dt_pcA_qqqR_pidlow_PC1",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE_pidlow_PC1",640,-2000,2000,400,0,30,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
plotter->Fill1D("dt_pcC_qqqW_pidlow_PC1",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
}
if(timecut) {// && qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4. ) {
bool phicut = qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
plotter->Fill2D("dE_E_AnodeQQQR",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_CathodeQQQR",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
plotter->Fill2D("dE_E_AnodeQQQR",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_CathodeQQQR",400,0,30,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_AnodeQQQR_a1c2",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_CathodeQQQR_a1c2",400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2);
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_AnodeQQQR_a2c1",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_CathodeQQQR_a2c1",400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2);
bool lowercut_cath = pcevent.Energy2*sinTheta < 250 && (qqqevent.Energy2 < 5.0 || qqqevent.Energy1 < 5.0) ;
if(phicut) {
plotter->Fill2D("dE2_E_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,10,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQW_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
plotter->Fill2D("dE2_E_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,30,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQW_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,30,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
//plotter->Fill2D("E_theta_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),75,0,90,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
plotter->Fill2D("E_theta_zoomin_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),60,0,30,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
}
plotter->Fill2D("dE2_E_AnodeQQQR_TC1_PC"+std::to_string(phicut),400,0,10,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQR_TC1_PC"+std::to_string(phicut),400,0,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
plotter->Fill2D("dE2_E_AnodeQQQR_TC1_PC"+std::to_string(phicut),400,0,30,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQR_TC1_PC"+std::to_string(phicut),400,0,30,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
plotter->Fill2D("dEC_vs_dEA_TC1_PC"+std::to_string(phicut),800,0,40000,800,0,10000,pcevent.Energy1,pcevent.Energy2);
/*if((qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI > 52) {
plotter->Fill2D("dE2_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
plotter->Fill2D("dE_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
} else {
plotter->Fill2D("dE2_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
plotter->Fill2D("dE_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
plotter->Fill2D("dE_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
}*/
plotter->Fill2D("qqqphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,qqqevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
//plotter->Fill2D("dE_E_CathodeQQQ(R/4)"+std::to_string(floor((qqqevent.ch1%16)/4))+"_TC1PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
//plotter->Fill2D("dE_E_AnodeQQQ(R/4)"+std::to_string(floor((qqqevent.ch1%16)/4))+"_TC1PC"+std::to_string(phicut),400,0,10,400,0,20000,qqqevent.Energy1,pcevent.Energy1);
plotter->Fill1D("dt_pcA_qqqR_timecut",1024,-4000,4000,qqqevent.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_qqqW_timecut",1024,-4000,4000,qqqevent.Time2 - pcevent.Time2);
plotter->Fill1D("dt_pcA_qqqR_timecut",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
plotter->Fill1D("dt_pcC_qqqW_timecut",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
plotter->Fill2D("dE_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1);
plotter->Fill2D("dE2_theta_AnodeQQQR_zoomin",60,0,30,400,0,5000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
plotter->Fill2D("dE2_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
@ -1137,15 +1094,15 @@ Bool_t MakeVertex::Process(Long64_t entry)
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
double sinTheta_customV = TMath::Sin((qqqevent.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
plotter->Fill2D("dE3_E_CathodeQQQW_A1C2_TC1_PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_TC1_PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeQQQW_A1C2_TC1_PC"+std::to_string(phicut),400,0,30,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_TC1_PC"+std::to_string(phicut),400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill1D("VertexRecon_pczfix_qqq",800,-400,400,r_rhoMin_fix.Z());
plotter->Fill1D("VertexRecon_pczfix_qqq_PC"+std::to_string(phicut)+"_pidlow"+std::to_string(lowercut_cath),800,-400,400,r_rhoMin_fix.Z());
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV);
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
plotter->Fill2D("dE3_E_CathodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV);
}
plotter->Fill1D("pczfix_A1C2_1d_qqq",600,-200,200,pcz_fix);
@ -1180,28 +1137,22 @@ Bool_t MakeVertex::Process(Long64_t entry)
double pcz_guess_int2 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta + source_vertex;
plotter->Fill2D("pczguess_vs_pc_int2",180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
double qqqz2 = (qqqevent.pos - r_rhoMin).Z();
double tan_theta2 = qqqrho/qqqz2;
double pcz_guess_int3 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta2 + r_rhoMin.Z();
plotter->Fill2D("pczguess_vs_pc_int3",180,0,200,150,0,200,pcz_guess_int3,pcevent.pos.Z(),"phicut");
//plotter->Fill2D("pczguess_vs_pc_int2_a"+std::to_string(pcevent.multi1)+"_c"+std::to_string(pcevent.multi2),180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
double pcz_guess = pcz_guess_int;
plotter->Fill2D("pctheta_vs_qqqtheta_sv",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,"phicut");
plotter->Fill2D("pctheta_vs_qqqtheta_rmz",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,"phicut");
plotter->Fill2D("pctheta_vs_qqqtheta_rm",180,-360,360,180,-360,360,(qqqevent.pos-r_rhoMin).Theta()*180/M_PI,(pcevent.pos-r_rhoMin).Theta()*180/M_PI,"phicut");
plotter->Fill2D("pczguess_vs_pc_phi="+std::to_string(qqqevent.pos.Phi()*180./M_PI),300,0,200,150,0,200,pcz_guess,pcevent.pos.Z(),"phicut");
//plotter->Fill1D("PCZ",800,-200,200,pcevent.pos.Z(),"phicut");
}
}
}//end PC QQQ coincidence
//HALFTIME! Can stop here in future versions
return kTRUE;
//return kTRUE;
if (anodeHits.size() >= 1 && cathodeHits.size() >= 1)
{
// 2. CRITICAL FIX: Define reference vector 'a'
@ -1228,6 +1179,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
cE = cathode.second;
plotter->Fill2D("AnodeMax_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aIDMax, cID, "hRawPC");
plotter->Fill2D("Anode_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aID, cID, "hRawPC");
plotter->Fill2D("Anode_Vs_Cathode_Coincidence_Matrix_qqq"+std::to_string(HitNonZero), 24, 0, 24, 24, 0, 24, aID, cID, "hRawPC");
plotter->Fill2D("Anode_vs_CathodeE", 2000, 0, 30000, 2000, 0, 30000, aE, cE, "hGMPC");
plotter->Fill2D("CathodeMult_V_CathodeE", 6, 0, 6, 2000, 0, 30000, cathodeHits.size(), cE, "hGMPC");
/*for (int j = -4; j < 3; j++)
@ -1321,15 +1273,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
}
}
//for (double Tz = 60; Tz <= 100; Tz += 1.0)
//{
// TVector3 TargetPos(0, 0, Tz);
//if(PCQQQPhiCut && anodeIntersection.Perp()>0 && anodeIntersection.Z()!=0 && cathodeHits.size()>=2) {
//plotter->Fill2D("Inttheta_vs_QQQtheta_TC" + std::to_string(PCQQQTimeCut) + "_TZ" + std::to_string(Tz), 400, 0, 180, 90, 0, 90, (anodeIntersection - TargetPos).Theta() * 180. / TMath::Pi(), (hitPos - TargetPos).Theta() * 180. / TMath::Pi(), "TPosVariation");
//plotter->Fill2D("R_ratio_to_Z_ratio" + std::to_string(PCQQQTimeCut) + "_TZ" + std::to_string(Tz), 100, -2, 2, 100, -2, 2, (anodeIntersection - TargetPos).Z()/(hitPos-TargetPos).Z(), ((anodeIntersection - TargetPos).Perp()+2.5)/(hitPos-TargetPos).Perp(), "TPosVariation");
//}
//}
if (anodeIntersection.Z() != 0 && anodeIntersection.Perp()>0 && HitNonZero)
{
plotter->Fill1D("PC_Z_Projection", 600, -300, 300, anodeIntersection.Z(), "hPCzQQQ");
@ -1595,8 +1538,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
plotter->Fill1D("AnodeHits", 12, 0, 11, anodeHits.size(), "hGMPC");
plotter->Fill2D("AnodeMaxE_vs_AnodeHits", 12, 0, 11, 2000, 0, 30000, anodeHits.size(), aEMax, "hGMPC");
if (anodeHits.size() < 1)
{
if (anodeHits.size() < 1) {
plotter->Fill1D("NoAnodeHits_CathodeHits", 6, 0, 5, cathodeHits.size(), "hGMPC");
}
@ -1610,14 +1552,12 @@ Bool_t MakeVertex::Process(Long64_t entry)
for(auto awevent: aWireEvents) {
//plotter->Fill1D("awdtqqq_vs_aw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(awevent)-qqqtimestamp,std::get<0>(awevent));
}
return kTRUE;
}
void MakeVertex::Terminate()
{
plotter->FlushToDisk();
plotter->FlushToDisk(10);
/* can1->Modified();
can1->Update();
can2->Modified();
@ -1625,3 +1565,108 @@ void MakeVertex::Terminate()
while(can1->WaitPrimitive());
while(can2->WaitPrimitive());*/
}
void protonAlphaHistograms(HistPlotter* plotter, std::vector<Event> QQQ_Events, std::vector<Event> SX3_Events, std::vector<Event> PC_Events){
//Sidetrack for a(p,p)
std::string aplabel = "a(p,p)";
Kinematics apkin_p(1.008664916,4.002603254,1.008664916,4.002603254,7.0);//m3 is proton
Kinematics apkin_a(1.008664916,4.002603254,4.002603254,1.008664916,7.0); //m3 is alpha
for(auto qqqevent: QQQ_Events) {
for(auto sx3event:SX3_Events) {
plotter->Fill1D("ap_qqq_sx3_dt",800,-2000,2000,qqqevent.Time1-sx3event.Time1,aplabel);
if(TMath::Abs(qqqevent.Time1-sx3event.Time1)>300) continue;
//sx3event.pos.SetZ(sx3event.pos.Z()+5.0);
plotter->Fill1D("ap_qqq_sx3_dt_timecut",800,-2000,2000,qqqevent.Time1-sx3event.Time1,aplabel);
plotter->Fill1D("ap_qqq_sx3_dphi",180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,aplabel);
plotter->Fill2D("ap_qqq_sx3_dphi_vs_qqqphi",180,-360,360,180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
plotter->Fill2D("ap_qqq_sx3_matrix",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
for(auto pcevent: PC_Events) {
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z())-5.0;
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
TVector3 x1(qqqevent.pos);
TVector3 v = x2f-x1;
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
double vertex_z = r_rhoMin_fix.Z();
double theta_q = (qqqevent.pos - TVector3(0,0,vertex_z)).Theta();
//double theta_q = (qqqevent.pos - r_rhoMin_fix).Theta();
double sinTheta_customV = TMath::Sin(theta_q);
double theta_s = (sx3event.pos - TVector3(0,0,vertex_z)).Theta();
//double theta_s = (sx3event.pos - r_rhoMin_fix).Theta();
double sinTheta_s = TMath::Sin(theta_s);
//if(vertex_z<0 || vertex_z>100) continue;
//double sinTheta = TMath::Sin((qqqevent.pos - pcevent.pos).Theta());
//plotter->Fill2D("sinTheta2_vs_sinTheta",80,-2,2,80,-2,2,sinTheta,sinTheta_customV,aplabel);
plotter->Fill2D("ap_dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1,aplabel);
plotter->Fill2D("ap_dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2,aplabel);
plotter->Fill2D("ap_dE_E_AnodeQQQ",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1,aplabel);
plotter->Fill2D("ap_dE_E_CathodeQQQ",400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2,aplabel);
plotter->Fill2D("ap_dE3_E_AnodeQQQ",400,0,10,400,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,aplabel);
plotter->Fill2D("ap_dE3_E_CathodeQQQ",400,0,10,400,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV,aplabel);
plotter->Fill2D("ap_dPhi_QQQ_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
plotter->Fill2D("ap_dPhi_SX3_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,sx3event.pos.Phi()*180/M_PI,aplabel);
plotter->Fill1D("ap_dt_Anode_QQQ",600,-2000,2000,pcevent.Time1-qqqevent.Time1,aplabel);
plotter->Fill1D("ap_dt_Cathode_QQQ",600,-2000,2000,pcevent.Time2-qqqevent.Time1,aplabel);
plotter->Fill1D("ap_dt_Anode_SX3",600,-2000,2000,pcevent.Time1-sx3event.Time1,aplabel);
plotter->Fill1D("ap_dt_Cathode_SX3",600,-2000,2000,pcevent.Time2-sx3event.Time1,aplabel);
plotter->Fill1D("ap_pczfix",600,-300,300,pcz_fix,aplabel);
plotter->Fill1D("ap_pcz",600,-300,300,pcevent.pos.Z(),aplabel);
double path_length_q = (qqqevent.pos-TVector3(0,0,vertex_z)).Mag()*0.1;
double path_length_s = (sx3event.pos-TVector3(0,0,vertex_z)).Mag()*0.1;
//double path_length_q = (qqqevent.pos-r_rhoMin_fix).Mag()*0.1;
//double path_length_s = (sx3event.pos-r_rhoMin_fix).Mag()*0.1;
//We know that alphas predominantly are detected in QQQs, and protons in SX3s, and that protons don't leave much of a trace in dE layer.
//Using the estimated path lengths, we correct alpha eloss in qqq, and protons in sx3. The result should (hopefully be) vertex independent.
double qqqEfix = cm_to_MeV->Eval(MeV_to_cm->Eval(qqqevent.Energy1)-path_length_q);
double sx3Efix = cm_to_MeVp->Eval(MeV_to_cm_p->Eval(sx3event.Energy1)-path_length_s);
//plotter->Fill2D("qqqEf_sx3E_matrix_all",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
plotter->Fill2D("ap_qqqEf_sx3Ef_matrix",400,0,10,400,0,10,qqqEfix,sx3Efix,aplabel);
plotter->Fill2D("ap_Ef_vs_theta_qqq",100,0,180,400,0,10,theta_q*180/M_PI,qqqEfix,aplabel);
plotter->Fill2D("ap_Ef_vs_theta_sx3",100,0,180,400,0,10,theta_s*180/M_PI,sx3Efix,aplabel);
plotter->Fill2D("ap_theta_vs_theta_qqq_sx3",100,0,180,100,0,180,theta_q*180/M_PI,theta_s*180/M_PI,aplabel);
plotter->Fill1D("ap_VertexReconZ",400,-200,200,vertex_z,aplabel);
plotter->Fill2D("ap_VertexReconXY",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
plotter->Fill1D("ap_Ex_from_protons",200,-10,10,apkin_p.getExc(sx3Efix,theta_s*180/M_PI),aplabel);
plotter->Fill1D("ap_Ex_from_alpha",200,-10,10,apkin_a.getExc(qqqEfix,theta_q*180/M_PI),aplabel);
if(pcevent.multi1==1 && pcevent.multi2==2) { //one-anode, two-cathode events, as originally intended
//std::cout << "Test" << std::endl;
plotter->Fill1D("ap_VertexReconZ_a1c2",400,-200,200,vertex_z,aplabel);
plotter->Fill2D("ap_VertexReconXY_a1c2",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
plotter->Fill2D("ap_theta_vs_theta_qqq_sx3_a1c2",100,0,180,100,0,180,theta_q*180/M_PI,theta_s*180/M_PI,aplabel);
plotter->Fill2D("ap_Ef_vs_theta_qqq_a1c2",100,0,180,400,0,10,theta_q*180/M_PI,qqqEfix,aplabel);
plotter->Fill1D("ap_Ex_from_protons_a1c2",200,-10,10,apkin_p.getExc(sx3Efix,theta_s*180/M_PI),aplabel);
plotter->Fill1D("ap_Ex_from_alpha_a1c2",200,-10,10,apkin_a.getExc(qqqEfix,theta_q*180/M_PI),aplabel);
//std::cout << apkin_p.getExc(sx3Efix,theta_s*180/M_PI) << " " << apkin_a.getExc(qqqEfix,theta_q*180/M_PI)<< std::endl;
plotter->Fill2D("ap_Ef_vs_theta_sx3_a1c2",100,0,180,400,0,10,theta_s*180/M_PI,sx3Efix,aplabel);
//plotter->Fill2D("qqqEf_sx3E_matrix",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
plotter->Fill2D("ap_qqq_sx3_matrix_a1c2",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
plotter->Fill2D("ap_qqqEf_sx3Ef_matrix_a1c2",400,0,10,400,0,10,qqqEfix,sx3Efix,aplabel);
//std::cout << sx3event.Energy1 << " " << path_length_s << " " << sx3Efix << std::endl;
//plotter->Fill2D("dE3_Ef_AnodeQQQ_a1c2",400,0,10,400,0,40000,qqqEfix,pcevent.Energy1*sinTheta_customV,aplabel);
//plotter->Fill2D("dE3_Ef_CathodeQQQ_a1c2",400,0,10,400,0,10000,qqqEfix,pcevent.Energy2*sinTheta_customV,aplabel);
} //end if(a1c2) loop
}//end PC_Events for loop
}//end SX3_Events for loop
} //end QQQ_Events for loop, end sidetrack a(p,p)
return;
}

View File

@ -2,7 +2,7 @@ rm results_run*.root
export DATASET="17F"
export flip180="0"
export flipa=0
export anode_offset=1
export anode_offset=0
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
@ -26,9 +26,9 @@ export anode_offset=1
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
#17F reaction data
export flip180="1"
export flip180="0"
declare -i run=231 #49
while [[ $run -lt 235 ]]; do #392
while [[ $run -lt 258 ]]; do #392
wrun=$(printf "%03d" $run)
file_exists=$(test -f ../ANASEN_analysis/data/17F_Data/Run_"$wrun"_mapped.root)
if [[ $file_exists -ne 0 ]]; then continue; fi

View File

@ -13,7 +13,7 @@ export anode_offset=1
declare -i run=50
while [[ $run -lt 59 ]]; do #runs 1 to 84
wrun=$(printf "%03d" $run)
root -q -l -b -x ../ANASEN_analysis/data/27Al_Data/Run_"$wrun"_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root 27Al_output/results_run$wrun.root;
root -q -l -b -x ../ANASEN_analysis/data/27Al_Data/Run_"$wrun"_mapped.root -e 'tree->Process("MakeVertex.C+O","Analyzer_27Al.root")'; mv Analyzer_27Al.root 27Al_output/results_run$wrun.root;
run=run+1
done

View File

@ -1,101 +1,104 @@
#Alpha runs at different spacer positions
rm results_run*.root
#export flipa=1
export anode_offset=1
#rm results_run*.root
export flipa=0
export anode_offset=0
export DATASET="27Al"
if [[ 1 -eq 0 ]]; then
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
exit
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_001_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run01.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_002_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run02.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_003_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run03.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_004_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run04.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_001_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run01.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_002_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run02.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_003_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run03.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_004_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run04.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
fi
#exit
#alpha+gas 27Al
export DATASET="27Al"
export flip180="0"
#root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
#root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
if [[ 1 -eq 0 ]]; then
#export timecut_low=500.0;
#export timecut_high=500.0;
#export timecut_low=230.0;
#export timecut_low=400.0;
#export timecut_high=400.0;
#unset timecut_low, timecut_high
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
#exit
fi
#protons+gas, 27Al
#export flip180="1"
#export flip180="0"
if [[ 1 -eq 0 ]] ; then
export anode_offset=1
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
exit
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_022_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run22.root;
if [[ 1 -eq 1 ]] ; then
export flipa=0
export anode_offset=0
export source_vertex=-200.0; #put the 'source' on the entrance window
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_022_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run22.root;
exit
fi
#27Al reaction data
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_051_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run51.root;
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_078_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run78.root;
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_081_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run81.root;
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_051_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run51.root;
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_078_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run78.root;
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_081_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run81.root;
#root -l -x results_run19.root results_run12.root -e "new TBrowser"
#exit
export DATASET="17F"
export flip180="0"
if [[ 1 -eq 1 ]]; then
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_014_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run14.root;
if [[ 1 -eq 0 ]]; then
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_014_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run14.root;
fi
#17F pulser runs
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_016_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run16.root;
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_016_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run16.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
#17F alpha run with gas
export source_vertex=53.44; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
export source_vertex=14.24; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
export source_vertex=-24.96; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
export source_vertex=-73.96; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
if [[ 1 -eq 1 ]]; then
export source_vertex=53.44; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
export source_vertex=14.24; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
export source_vertex=-24.96; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
export source_vertex=-73.96; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
fi
#17F reaction data
export flip180="1"
#export source_vertex=-57.28; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_035_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run35.root;
#export source_vertex=-8.28; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_036_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root resulrs_run36.root;
#export source_vertex=-27.88; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_037_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run37.root;
#export source_vertex=11.32; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_038_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run38.root;
#export source_vertex=30.92; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_039_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run39.root;
#export source_vertex=50.52; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_041_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run41.root;
#export source_vertex=70.12; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_042_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run42.root;
#export source_vertex=109.32; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/Run_099_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run99.root;
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/Run_104_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run104.root;
#export flip180="0"
if [[ 1 -eq 0 ]]; then
export source_vertex=-57.28; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_035_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run35.root;
#export source_vertex=-8.28; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_036_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root resulrs_run36.root;
#export source_vertex=-27.88; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_037_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run37.root;
#export source_vertex=11.32; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_038_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run38.root;
#export source_vertex=30.92; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_039_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run39.root;
#export source_vertex=50.52; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_041_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run41.root;
#export source_vertex=70.12; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_042_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run42.root;
#export source_vertex=109.32; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Run_099_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run99.root;
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Run_104_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run104.root;
#mv Analyzer_SX3.root results_run19.root;
fi
unset flipa
unset flipc
unset anode_offset