Updates showing decent convergence on a(p,p) reaction, demonstrating a pcz offset of close to -5.0 mm for agreement
1) eloss calculations from pycatima folded in externally 2) stepladder correction moved into Armory 3) a(p,p) calculations live in their own function 4) first steps towards looking at one-wire dE/E signals, and one-wire anodes vs si-phi correlations
This commit is contained in:
parent
1ace406746
commit
1e0af0fe9d
111
Armory/Kinematics.cpp
Normal file
111
Armory/Kinematics.cpp
Normal 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
207
Armory/Kinematics.h
Normal 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
|
||||||
42
Armory/PC_StepLadder_Correction.h
Normal file
42
Armory/PC_StepLadder_Correction.h
Normal 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());
|
||||||
|
|
||||||
|
}*/
|
||||||
431
MakeVertex.C
431
MakeVertex.C
|
|
@ -13,8 +13,8 @@ Int_t colors[40] = {
|
||||||
#include "Armory/ClassPW.h"
|
#include "Armory/ClassPW.h"
|
||||||
#include "Armory/HistPlotter.h"
|
#include "Armory/HistPlotter.h"
|
||||||
#include "Armory/SX3Geom.h"
|
#include "Armory/SX3Geom.h"
|
||||||
#include "scratch/sx3z_vs_phiz/testmodel.h"
|
#include "Armory/PC_StepLadder_Correction.h"
|
||||||
#include "scratch/test_eloss.h"
|
#include "Armory/Kinematics.h"
|
||||||
#include <TH2.h>
|
#include <TH2.h>
|
||||||
#include <TF1.h>
|
#include <TF1.h>
|
||||||
#include <TStyle.h>
|
#include <TStyle.h>
|
||||||
|
|
@ -38,6 +38,7 @@ Int_t colors[40] = {
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
bool realtime = true;
|
bool realtime = true;
|
||||||
|
bool process_alpha_proton_scattering = true;
|
||||||
double source_vertex = 53; //53
|
double source_vertex = 53; //53
|
||||||
const double qqq_z = 100.0;
|
const double qqq_z = 100.0;
|
||||||
const double anode_gain = 1.5146e-5; //channels --> MeV
|
const double anode_gain = 1.5146e-5; //channels --> MeV
|
||||||
|
|
@ -58,6 +59,7 @@ TPolyLine3D *qqqw[16][4]={NULL};
|
||||||
TPolyLine3D *trajectory=NULL;
|
TPolyLine3D *trajectory=NULL;
|
||||||
TGraph2D *qqqg=NULL, *crossoverg=NULL, *guessg=NULL;
|
TGraph2D *qqqg=NULL, *crossoverg=NULL, *guessg=NULL;
|
||||||
|
|
||||||
|
|
||||||
double z_to_crossover_rho(double z) {
|
double z_to_crossover_rho(double z) {
|
||||||
return 9.20645e-5*z*z + 34.1973;
|
return 9.20645e-5*z*z + 34.1973;
|
||||||
}
|
}
|
||||||
|
|
@ -113,6 +115,9 @@ bool HitNonZero;
|
||||||
bool sx3ecut;
|
bool sx3ecut;
|
||||||
bool qqqEcut;
|
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*/)
|
void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
{
|
{
|
||||||
pcfix_func.SetNpx(100000);
|
pcfix_func.SetNpx(100000);
|
||||||
|
|
@ -156,7 +161,7 @@ void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
//usleep(4e5);
|
//usleep(4e5);
|
||||||
// Load PC Calibrations
|
// Load PC Calibrations
|
||||||
std::ifstream inputFile("slope_intercept_results_"+dataset+".txt");
|
std::ifstream inputFile("slope_intercept_results_"+dataset+".dat");
|
||||||
if (inputFile.is_open())
|
if (inputFile.is_open())
|
||||||
{
|
{
|
||||||
std::string line;
|
std::string line;
|
||||||
|
|
@ -176,7 +181,7 @@ void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
}
|
}
|
||||||
else
|
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) ...
|
// ... (Load QQQ Gains and Calibs - same as before) ...
|
||||||
|
|
@ -236,11 +241,12 @@ void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
}
|
}
|
||||||
infile.close();
|
infile.close();
|
||||||
}
|
}
|
||||||
MeV_to_cm = new TGraph("eloss_calculations/alphas_in_250torr_mix_filtered_full.txt","%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());
|
cm_to_MeV= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
|
||||||
|
|
||||||
MeV_to_cm_p = new TGraph("eloss_calculations/protons_in_250torr_mix_filtered_full.txt","%lf %*lf %lf");
|
MeV_to_cm_p = new TGraph("eloss_calculations/proton_lookup_20MeV.dat","%lf %*lf %lf");
|
||||||
cm_to_MeVp= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
|
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'
|
//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;
|
bool no_charge_sharing_strict = det.valid_front_chans.size()==1 && det.valid_back_chans.size()==1;
|
||||||
if(det.valid) {
|
if(det.valid) {
|
||||||
//std::cout << det.frontEL << " " << det.frontEL*sx3RightGain[id][det.stripF] << std::endl;
|
//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,
|
//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");
|
||||||
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,
|
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");
|
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("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) {
|
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];
|
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];
|
double backE = det.backE*sx3BackGain[id][det.stripF][det.stripB];
|
||||||
//if(backE<2000) continue;
|
//if(backE<2000) continue;
|
||||||
det.stripF=3-det.stripF;
|
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);
|
double phi_n = ((-id+0.5)*30+beta_n);
|
||||||
phi_n+=45;
|
phi_n+=45;
|
||||||
|
|
||||||
if(getenv("flip180")) {
|
//if(getenv("flip180")) {
|
||||||
if(std::string(getenv("flip180"))=="1") {
|
// if(std::string(getenv("flip180"))=="1") {
|
||||||
//if(dataset=="17F")
|
//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
|
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);
|
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);
|
SX3_Events.push_back(sx3ev);
|
||||||
plotter->Fill2D("sx3backs_gm",100,0,100,800,0,8192,det.stripB+4*id,backE);
|
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", 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");
|
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;
|
//return kTRUE;
|
||||||
|
|
@ -564,7 +573,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if (pc.index[k] >= 24 && pc.e[k] > 10) {
|
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;
|
||||||
//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");
|
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
|
} //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 rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
||||||
double theta = 2 * TMath::Pi() * (-qqq.id[i] * 16 + (15-chWedge) + 0.5)/(16*4);
|
double theta = 2 * TMath::Pi() * (-qqq.id[i] * 16 + (15-chWedge) + 0.5)/(16*4);
|
||||||
double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
||||||
|
|
||||||
double x = rho * TMath::Cos(theta);
|
double x = rho * TMath::Cos(theta);
|
||||||
double y = rho * TMath::Sin(theta);
|
double y = rho * TMath::Sin(theta);
|
||||||
hitPos.SetXYZ(x, y, qqq_z);
|
hitPos.SetXYZ(x, y, qqq_z);
|
||||||
|
|
@ -591,9 +598,9 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
PCQQQTimeCut = PCAQQQTimeCut && PCCQQQTimeCut;
|
PCQQQTimeCut = PCAQQQTimeCut && PCCQQQTimeCut;
|
||||||
plotter->Fill1D("QQQ_Multiplicity", 10, 0, 10, qqqCount, "hRawQQQ");
|
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'
|
||||||
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
|
||||||
WireEvent aWireEvents, cWireEvents; //naming for book keeping
|
|
||||||
aWireEvents.clear();
|
aWireEvents.clear();
|
||||||
aWireEvents.reserve(24);
|
aWireEvents.reserve(24);
|
||||||
if(realtime) {
|
if(realtime) {
|
||||||
|
|
@ -752,91 +759,11 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Sidetrack for a(p,p)
|
if(process_alpha_proton_scattering) {
|
||||||
std::string aplabel = "a(p,p)";
|
protonAlphaHistograms(plotter,QQQ_Events,SX3_Events,PC_Events);
|
||||||
for(auto qqqevent: QQQ_Events) {
|
//return kTRUE;
|
||||||
for(auto sx3event:SX3_Events) {
|
}//end if(process_alpha_proton_scattering)
|
||||||
plotter->Fill1D("qqq_sx3_dt",800,-2000,2000,qqqevent.Time1-sx3event.Time1,aplabel);
|
|
||||||
if(TMath::Abs(qqqevent.Time1-sx3event.Time1)>300) continue;
|
|
||||||
plotter->Fill1D("qqq_sx3_dt_timecut",800,-2000,2000,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)
|
|
||||||
//return kTRUE;
|
|
||||||
|
|
||||||
/*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())
|
if(QQQ_Events.size() && PC_Events.size())
|
||||||
plotter->Fill2D("PCEv_vs_QQQEv",20,0,20,20,0,20,QQQ_Events.size(),PC_Events.size());
|
plotter->Fill2D("PCEv_vs_QQQEv",20,0,20,20,0,20,QQQ_Events.size(),PC_Events.size());
|
||||||
|
|
@ -852,6 +779,51 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if(cClusters.size() && aClusters.size()) {
|
if(cClusters.size() && aClusters.size()) {
|
||||||
plotter->Fill2D("ac_vs_cc_ign0",20,0,20,20,0,20,aClusters.size(),cClusters.size(),"wiremult");
|
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) {
|
for(auto pcevent:PC_Events) {
|
||||||
if(aClusters.size()==1 && cClusters.size() == 1) {
|
if(aClusters.size()==1 && cClusters.size() == 1) {
|
||||||
|
|
@ -874,12 +846,15 @@ 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.;
|
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",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
|
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->Fill1D("dt_pcC_sx3B",640,-2000,2000,sx3event.Time1 - pcevent.Time2);
|
||||||
plotter->Fill2D("dt_pcA_vs_sx3RE",640,-2000,2000,400,0,10,sx3event.Time1-pcevent.Time1, sx3event.Energy1);
|
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,10,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
plotter->Fill2D("dE_E_Anodesx3B",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
||||||
plotter->Fill2D("dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2);
|
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);
|
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) {
|
if(PCSX3TimeCut) {
|
||||||
plotter->Fill1D("dt_pcA_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcA_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
|
||||||
|
|
@ -889,13 +864,12 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
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
|
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 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 pcz = pcevent.pos.Z();
|
||||||
double calcsx3theta = TMath::ATan2(sx3rho-z_to_crossover_rho(pcz),sx3z-pcz);
|
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_Anodesx3B",400,0,30,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_Cathodesx3B",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*TMath::Sin(calcsx3theta));
|
||||||
|
|
||||||
|
|
||||||
double sx3theta = TMath::ATan2(sx3rho,sx3z-source_vertex);
|
double sx3theta = TMath::ATan2(sx3rho,sx3z-source_vertex);
|
||||||
|
|
@ -912,14 +886,14 @@ 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("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("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("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("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
|
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 && pcevent.multi2==2) {
|
||||||
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
|
//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());
|
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
|
||||||
|
|
||||||
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
||||||
|
|
@ -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());
|
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());
|
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_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,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*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) {
|
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_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,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*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) {
|
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->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("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"+std::to_string(sx3event.ch2),400,0,30,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",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("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);
|
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
|
}//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++) {
|
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(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;
|
if(QQQ_Events.at(ii).ch1 == QQQ_Events.at(jj).ch1) continue;
|
||||||
|
|
@ -1020,27 +994,26 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if(TMath::Abs(dt) > 150) continue;
|
if(TMath::Abs(dt) > 150) continue;
|
||||||
plotter->Fill1D("dt_qqqi_qqqj_coinc",800,-2000,2000,dt);
|
plotter->Fill1D("dt_qqqi_qqqj_coinc",800,-2000,2000,dt);
|
||||||
double sum_e = QQQ_Events.at(ii).Energy1+QQQ_Events.at(jj).Energy1;
|
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("sum_qqqE",400,0,30,400,0,30,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,30,400,0,30,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("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_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);
|
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) {
|
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);
|
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;
|
//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_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);
|
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 pcevent: PC_Events) {
|
||||||
for(auto qqqevent: QQQ_Events) {
|
for(auto qqqevent: QQQ_Events) {
|
||||||
plotter->Fill1D("dt_pcA_qqqR",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcA_qqqR",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
||||||
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE",640,-2000,2000,400,0,10,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
|
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->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);
|
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());
|
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,53 +1024,37 @@ 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());
|
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;
|
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 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. ) {
|
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,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
||||||
plotter->Fill2D("dE_E_AnodeQQQR",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
plotter->Fill2D("dE_E_CathodeQQQR",400,0,30,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
||||||
plotter->Fill2D("dE_E_CathodeQQQR",400,0,10,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) {
|
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_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,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*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_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("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_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,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*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);
|
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("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",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
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->Fill1D("dt_pcC_qqqW_timecut",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
|
||||||
|
|
@ -1137,15 +1094,15 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
|
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_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_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,10,800,0,10000,qqqevent.Energy1,pcevent.Energy1*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",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());
|
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) {
|
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_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,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2*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);
|
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;
|
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");
|
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 qqqz2 = (qqqevent.pos - r_rhoMin).Z();
|
||||||
double tan_theta2 = qqqrho/qqqz2;
|
double tan_theta2 = qqqrho/qqqz2;
|
||||||
double pcz_guess_int3 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta2 + r_rhoMin.Z();
|
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_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");
|
//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;
|
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_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_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("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->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
|
}//end PC QQQ coincidence
|
||||||
//HALFTIME! Can stop here in future versions
|
//HALFTIME! Can stop here in future versions
|
||||||
return kTRUE;
|
//return kTRUE;
|
||||||
if (anodeHits.size() >= 1 && cathodeHits.size() >= 1)
|
if (anodeHits.size() >= 1 && cathodeHits.size() >= 1)
|
||||||
{
|
{
|
||||||
// 2. CRITICAL FIX: Define reference vector 'a'
|
// 2. CRITICAL FIX: Define reference vector 'a'
|
||||||
|
|
@ -1228,6 +1179,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
cE = cathode.second;
|
cE = cathode.second;
|
||||||
plotter->Fill2D("AnodeMax_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aIDMax, cID, "hRawPC");
|
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", 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("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");
|
plotter->Fill2D("CathodeMult_V_CathodeE", 6, 0, 6, 2000, 0, 30000, cathodeHits.size(), cE, "hGMPC");
|
||||||
/*for (int j = -4; j < 3; j++)
|
/*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)
|
if (anodeIntersection.Z() != 0 && anodeIntersection.Perp()>0 && HitNonZero)
|
||||||
{
|
{
|
||||||
plotter->Fill1D("PC_Z_Projection", 600, -300, 300, anodeIntersection.Z(), "hPCzQQQ");
|
plotter->Fill1D("PC_Z_Projection", 600, -300, 300, anodeIntersection.Z(), "hPCzQQQ");
|
||||||
|
|
@ -1585,7 +1528,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cEMax*sinTheta, "hGMPC");
|
//plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cEMax*sinTheta, "hGMPC");
|
||||||
|
|
||||||
if(PCQQQTimeCut && PCQQQPhiCut) {
|
if(PCQQQTimeCut && PCQQQPhiCut) {
|
||||||
plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut)+"_cMax"+std::to_string(cIDMax), 800, 0, 20000, 800, 0, 10000, aESum, cEMax, "hGMPC");
|
plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut)+"_cMax"+std::to_string(cIDMax), 800, 0, 20000, 800, 0, 10000, aESum, cEMax, "hGMPC");
|
||||||
}
|
}
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC");
|
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC");
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut), 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC"); */
|
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut), 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC"); */
|
||||||
|
|
@ -1595,11 +1538,10 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
plotter->Fill1D("AnodeHits", 12, 0, 11, anodeHits.size(), "hGMPC");
|
plotter->Fill1D("AnodeHits", 12, 0, 11, anodeHits.size(), "hGMPC");
|
||||||
plotter->Fill2D("AnodeMaxE_vs_AnodeHits", 12, 0, 11, 2000, 0, 30000, anodeHits.size(), aEMax, "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");
|
plotter->Fill1D("NoAnodeHits_CathodeHits", 6, 0, 5, cathodeHits.size(), "hGMPC");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(auto cwevent: cWireEvents) {
|
for(auto cwevent: cWireEvents) {
|
||||||
//plotter->Fill1D("cwdtqqq_vs_cw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(cwevent)-qqqtimestamp,std::get<0>(cwevent));
|
//plotter->Fill1D("cwdtqqq_vs_cw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(cwevent)-qqqtimestamp,std::get<0>(cwevent));
|
||||||
for(auto awevent: aWireEvents) {
|
for(auto awevent: aWireEvents) {
|
||||||
|
|
@ -1610,8 +1552,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
for(auto awevent: aWireEvents) {
|
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));
|
//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;
|
return kTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1625,3 +1565,108 @@ void MakeVertex::Terminate()
|
||||||
while(can1->WaitPrimitive());
|
while(can1->WaitPrimitive());
|
||||||
while(can2->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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
31981
eloss_calculations/alpha_lookup_20MeV.dat
Normal file
31981
eloss_calculations/alpha_lookup_20MeV.dat
Normal file
File diff suppressed because it is too large
Load Diff
5474
eloss_calculations/alphas_in_250torr_mix_filtered_6MeV.txt
Normal file
5474
eloss_calculations/alphas_in_250torr_mix_filtered_6MeV.txt
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -1,17 +1,28 @@
|
||||||
#include "/home/sud/Desktop/Software2/propagator/elastcaller.h"
|
#include "/home/sud/Desktop/Software2/propagator/elastcaller.h"
|
||||||
void make_eloss_table() {
|
void make_eloss_table_protons() {
|
||||||
double einput = 6.0, estepnow;
|
double einput = 20.0, estepnow;
|
||||||
double target_thickness_unit = 1e-3; //mg/cm2.
|
double target_thickness_unit = 4e-2; //mg/cm2.
|
||||||
double density = 0.0711;//mg/cm3
|
double density = 0.0711;//mg/cm3
|
||||||
long i=0;
|
long i=0;
|
||||||
while(einput > 0.001) {
|
while(einput > 0.001) {
|
||||||
/* std::cout << "After " << i << " steps, 4He is at " << einput << " MeV after penetrating " << i*target_thickness_unit << " mg/cm2 " << i*target_thickness_unit/density << " cm of HeCO2" << std::endl;
|
|
||||||
estepnow = slowmedown("4He",einput,"3(12C)6(16O)97(4He)",target_thickness_unit);
|
|
||||||
*/
|
|
||||||
|
|
||||||
std::cout << "After " << i << " steps, 1H is at " << einput << " MeV after penetrating " << i*target_thickness_unit << " mg/cm2 " << i*target_thickness_unit/density << " cm of HeCO2" << std::endl;
|
std::cout << "After " << i << " steps, 1H is at " << einput << " MeV after penetrating " << i*target_thickness_unit << " mg/cm2 " << i*target_thickness_unit/density << " cm of HeCO2" << std::endl;
|
||||||
estepnow = slowmedown("1H",einput,"3(12C)6(16O)97(4He)",target_thickness_unit);
|
estepnow = slowmedown("1H",einput,"3(12C)6(16O)97(4He)",target_thickness_unit);
|
||||||
|
|
||||||
|
einput = estepnow;
|
||||||
|
i+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void make_eloss_table() {
|
||||||
|
double einput = 20.0, estepnow;
|
||||||
|
double target_thickness_unit = 1e-3; //mg/cm2.
|
||||||
|
double density = 0.0711;//mg/cm3
|
||||||
|
long i=0;
|
||||||
|
while(einput > 0.001) {
|
||||||
|
std::cout << "After " << i << " steps, 4He is at " << einput << " MeV after penetrating " << i*target_thickness_unit << " mg/cm2 " << i*target_thickness_unit/density << " cm of HeCO2" << std::endl;
|
||||||
|
estepnow = slowmedown("4He",einput,"3(12C)6(16O)97(4He)",target_thickness_unit);
|
||||||
|
|
||||||
|
|
||||||
einput = estepnow;
|
einput = estepnow;
|
||||||
i+=1;
|
i+=1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
397468
eloss_calculations/proton_lookup_20MeV.dat
Normal file
397468
eloss_calculations/proton_lookup_20MeV.dat
Normal file
File diff suppressed because it is too large
Load Diff
11145
eloss_calculations/protons_in_250torr_mix_filtered_20MeV.txt
Normal file
11145
eloss_calculations/protons_in_250torr_mix_filtered_20MeV.txt
Normal file
File diff suppressed because it is too large
Load Diff
50773
eloss_calculations/protons_in_250torr_mix_filtered_6MeV.txt
Normal file
50773
eloss_calculations/protons_in_250torr_mix_filtered_6MeV.txt
Normal file
File diff suppressed because it is too large
Load Diff
29
results/compare.C
Normal file
29
results/compare.C
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
TGraph kinematics("a(p,p)a_kinematics_7MeV_p.txt","%*lf %lf %*lf %lf");
|
||||||
|
kinematics.Scale(4.0);
|
||||||
|
TGraph kin2(kinematics.GetN(), kinematics.GetY(),kinematics.GetX());
|
||||||
|
//TFile fin("4He(pp)_candidate_kinematic_curve.root");
|
||||||
|
//TH2F *h2 = (TH2F*)(fin.Get("Ef_thetaf_AnodeQQQR_TC1_PC1_pidlow0_1"));
|
||||||
|
|
||||||
|
// TFile fin("../results_run15.root");
|
||||||
|
TFile fin("out.root");
|
||||||
|
//TH2F *h2 = (TH2F*)(fin.Get("Ef_thetaf_AnodeQQQR_TC1_PC1_pidlow0_1"));
|
||||||
|
// TFile fin("run15_sx3_qqq_alphas_kinematic.root");
|
||||||
|
TH2F *h2 = (TH2F*)(fin.Get("a(p,p)/ap_qqqEf_sx3Ef_matrix_a1c2"));
|
||||||
|
h2->Draw();
|
||||||
|
kin2.Draw("L SAME");
|
||||||
|
gPad->Modified();
|
||||||
|
gPad->Update();
|
||||||
|
while(gPad->WaitPrimitive());
|
||||||
|
gPad->Clear();
|
||||||
|
|
||||||
|
TGraph angles("a(p,p)a_kinematics_7MeV_p.txt","%lf %*lf %lf %*lf");
|
||||||
|
TGraph angles2(angles.GetN(),angles.GetY(),angles.GetX());
|
||||||
|
h2 = (TH2F*)(fin.Get("a(p,p)/ap_theta_vs_theta_qqq_sx3_a1c2"));
|
||||||
|
h2->Draw();
|
||||||
|
angles2.Draw("L SAME");
|
||||||
|
gPad->Modified();
|
||||||
|
gPad->Update();
|
||||||
|
while(gPad->WaitPrimitive());
|
||||||
|
gPad->SaveAs("c1.png");
|
||||||
|
}
|
||||||
33
results/compareE.C
Normal file
33
results/compareE.C
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
TGraph kinematics("a(p,p)a_kinematics_7MeV_p.txt","%*lf %*lf %lf %lf");
|
||||||
|
kinematics.Scale(4.0);
|
||||||
|
kinematics.SetLineColor(kBlue);
|
||||||
|
kinematics.SetLineWidth(2.);
|
||||||
|
//TFile fin("4He(pp)_candidate_kinematic_curve.root");
|
||||||
|
//TH2F *h2 = (TH2F*)(fin.Get("Ef_thetaf_AnodeQQQR_TC1_PC1_pidlow0_1"));
|
||||||
|
|
||||||
|
// TFile fin("../results_run18.root");
|
||||||
|
// TFile fin("out_zminus5_catima.root");
|
||||||
|
TFile fin("out.root");
|
||||||
|
//TH2F *h2 = (TH2F*)(fin.Get("Ef_thetaf_AnodeQQQR_TC1_PC1_pidlow0_1"));
|
||||||
|
// TFile fin("run15_sx3_qqq_alphas_kinematic.root");
|
||||||
|
TH2F *h2 = (TH2F*)(fin.Get("a(p,p)/ap_Ef_vs_theta_qqq_a1c2"));
|
||||||
|
h2->Draw("box");
|
||||||
|
h2->RebinY(8);
|
||||||
|
kinematics.Draw("L SAME");
|
||||||
|
gPad->Modified();
|
||||||
|
gPad->Update();
|
||||||
|
while(gPad->WaitPrimitive());
|
||||||
|
|
||||||
|
TGraph kinematicsp("a(p,p)a_kinematics_7MeV_p.txt","%lf %lf %*lf %*lf");
|
||||||
|
kinematicsp.SetLineWidth(2.);
|
||||||
|
TH2F *h2p = (TH2F*)(fin.Get("a(p,p)/ap_Ef_vs_theta_sx3_a1c2"));
|
||||||
|
h2p->RebinY(8);
|
||||||
|
h2p->SetLineColor(kBlack);
|
||||||
|
//h2p->SetLineColor(kRed);
|
||||||
|
h2p->Draw("box same");
|
||||||
|
kinematicsp.Draw("L SAME");
|
||||||
|
|
||||||
|
gPad->SaveAs("c1.png");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@ rm results_run*.root
|
||||||
export DATASET="17F"
|
export DATASET="17F"
|
||||||
export flip180="0"
|
export flip180="0"
|
||||||
export flipa=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_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_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_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;
|
#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
|
#17F reaction data
|
||||||
export flip180="1"
|
export flip180="0"
|
||||||
declare -i run=231 #49
|
declare -i run=231 #49
|
||||||
while [[ $run -lt 235 ]]; do #392
|
while [[ $run -lt 258 ]]; do #392
|
||||||
wrun=$(printf "%03d" $run)
|
wrun=$(printf "%03d" $run)
|
||||||
file_exists=$(test -f ../ANASEN_analysis/data/17F_Data/Run_"$wrun"_mapped.root)
|
file_exists=$(test -f ../ANASEN_analysis/data/17F_Data/Run_"$wrun"_mapped.root)
|
||||||
if [[ $file_exists -ne 0 ]]; then continue; fi
|
if [[ $file_exists -ne 0 ]]; then continue; fi
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ export anode_offset=1
|
||||||
declare -i run=50
|
declare -i run=50
|
||||||
while [[ $run -lt 59 ]]; do #runs 1 to 84
|
while [[ $run -lt 59 ]]; do #runs 1 to 84
|
||||||
wrun=$(printf "%03d" $run)
|
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
|
run=run+1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
||||||
20
run_sx3.sh
20
run_sx3.sh
|
|
@ -1,10 +1,10 @@
|
||||||
#Alpha runs at different spacer positions
|
#Alpha runs at different spacer positions
|
||||||
rm results_run*.root
|
#rm results_run*.root
|
||||||
export flipa=0
|
export flipa=0
|
||||||
export anode_offset=1
|
export anode_offset=0
|
||||||
export DATASET="27Al"
|
export DATASET="27Al"
|
||||||
if [[ 1 -eq 0 ]]; then
|
if [[ 1 -eq 0 ]]; then
|
||||||
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O","27Al")'; mv Analyzer_SX3.root results_run09.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_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_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_003_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run03.root;
|
||||||
|
|
@ -21,11 +21,11 @@ export DATASET="27Al"
|
||||||
export flip180="0"
|
export flip180="0"
|
||||||
#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;
|
#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
|
if [[ 1 -eq 0 ]]; then
|
||||||
#export timecut_low=500.0;
|
#export timecut_low=230.0;
|
||||||
#export timecut_high=500.0;
|
#export timecut_low=400.0;
|
||||||
|
#export timecut_high=400.0;
|
||||||
#unset timecut_low, timecut_high
|
#unset timecut_low, timecut_high
|
||||||
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_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
||||||
exit
|
|
||||||
#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_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_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_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
|
||||||
|
|
@ -38,10 +38,9 @@ fi
|
||||||
#export flip180="0"
|
#export flip180="0"
|
||||||
if [[ 1 -eq 1 ]] ; then
|
if [[ 1 -eq 1 ]] ; then
|
||||||
export flipa=0
|
export flipa=0
|
||||||
export anode_offset=1
|
export anode_offset=0
|
||||||
export source_vertex=-200.0; #put the 'source' on the entrance window
|
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_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
|
||||||
exit
|
|
||||||
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_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_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_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
|
||||||
|
|
@ -86,6 +85,7 @@ export source_vertex=-73.96; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/S
|
||||||
fi
|
fi
|
||||||
#17F reaction data
|
#17F reaction data
|
||||||
#export flip180="0"
|
#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=-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=-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=-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;
|
||||||
|
|
@ -98,7 +98,7 @@ export source_vertex=-57.28; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/P
|
||||||
#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_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;
|
#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;
|
#mv Analyzer_SX3.root results_run19.root;
|
||||||
|
fi
|
||||||
unset flipa
|
unset flipa
|
||||||
unset flipc
|
unset flipc
|
||||||
unset anode_offset
|
unset anode_offset
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ void scan_offset(){
|
||||||
if(i==12) {
|
if(i==12) {
|
||||||
//TH2F *h2 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int"));
|
//TH2F *h2 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int"));
|
||||||
TH2F *h23 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int_A1C2"));
|
TH2F *h23 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int_A1C2"));
|
||||||
|
if(h23) continue;
|
||||||
h23->SetLineColorAlpha(kOrange,0.75);
|
h23->SetLineColorAlpha(kOrange,0.75);
|
||||||
h23->Draw("box SAME");
|
h23->Draw("box SAME");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,10 @@ void scan_offset_fix(){
|
||||||
std::vector<TFile*> files;
|
std::vector<TFile*> files;
|
||||||
int ctr=0;
|
int ctr=0;
|
||||||
for(int i=12; i<=21; i++) {
|
for(int i=12; i<=21; i++) {
|
||||||
|
if(i==15) continue;
|
||||||
auto c1=c.cd(1);
|
auto c1=c.cd(1);
|
||||||
c1->SetGrid(1,1);
|
c1->SetGrid(1,1);
|
||||||
f = new TFile(Form("../../results_run%d.root",i));
|
f = new TFile(Form("../../results_run%d.root",i));
|
||||||
|
|
||||||
if(i==12) {
|
if(i==12) {
|
||||||
//TH2F *h2 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int"));
|
//TH2F *h2 = (TH2F*)(f->Get("phicut/pczguess_vs_pc_int"));
|
||||||
TH2F *h23 = (TH2F*)(f->Get("pczfix_vs_qqqpczguess_A1C2"));
|
TH2F *h23 = (TH2F*)(f->Get("pczfix_vs_qqqpczguess_A1C2"));
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,7 @@ double model_invert(double *y, double *q) {
|
||||||
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]) < 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 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;
|
else result=y[0]/slope-TMath::Sign(1.0,y[0])*factor*2;
|
||||||
return result;
|
return result+40;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void testmodel() {
|
/*void testmodel() {
|
||||||
|
|
|
||||||
23
slope_intercept_cathode.txt
Normal file
23
slope_intercept_cathode.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
24 1 -2.89219e-10
|
||||||
|
25 0.942098 -0.105169
|
||||||
|
26 0.980862 -0.732032
|
||||||
|
27 0.982975 -2.22704
|
||||||
|
28 0.978815 -1.51477
|
||||||
|
29 0.965245 -2.19515
|
||||||
|
30 0.945384 -0.892599
|
||||||
|
31 0.977408 -0.908592
|
||||||
|
32 0.919546 3.25464
|
||||||
|
33 0.972194 2.44956
|
||||||
|
34 0.92852 5.44745
|
||||||
|
35 0.947098 1.40531
|
||||||
|
36 0.875491 -1.13145
|
||||||
|
37 1.95496 -1735.58
|
||||||
|
38 0.970862 2.86019
|
||||||
|
40 0.91793 -3.80615
|
||||||
|
41 0.913897 -2.12964
|
||||||
|
42 0.954014 -0.760604
|
||||||
|
43 0.993616 -1.40278
|
||||||
|
45 0.926169 -21.2016
|
||||||
|
46 1.00577 -2.14281
|
||||||
|
47 0.943312 -1.26464
|
||||||
49
slope_intercept_results.txt
Normal file
49
slope_intercept_results.txt
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
0 0.931015 -1.35431
|
||||||
|
1 1 -1.87356e-10
|
||||||
|
2 0.964185 1.49989
|
||||||
|
3 0.92638 -1.30621
|
||||||
|
4 0.905569 1.00834
|
||||||
|
5 0.901182 0.470903
|
||||||
|
6 0.853932 3.32687
|
||||||
|
7 0.942785 1.08887
|
||||||
|
8 0.878904 -0.0107433
|
||||||
|
9 0.922662 -2.32259
|
||||||
|
10 0.903343 8.38332
|
||||||
|
11 0.914227 6.56108
|
||||||
|
12 0.961008 23.0982
|
||||||
|
13 0.920976 5.22104
|
||||||
|
14 0.936584 31.5073
|
||||||
|
15 0.959044 5.43267
|
||||||
|
16 0.95263 -0.404053
|
||||||
|
17 0.90953 4.82833
|
||||||
|
18 0.940277 10.3629
|
||||||
|
19 0.86746 -17.8678
|
||||||
|
20 1.00683 4.76371
|
||||||
|
21 0.968342 -43.9496
|
||||||
|
22 0.892882 -32.0742
|
||||||
|
23 0.933615 1.10704
|
||||||
|
24 1 -2.89219e-10
|
||||||
|
25 0.942098 -0.105169
|
||||||
|
26 0.980862 -0.732032
|
||||||
|
27 0.982975 -2.22704
|
||||||
|
28 0.978815 -1.51477
|
||||||
|
29 0.965245 -2.19515
|
||||||
|
30 0.945384 -0.892599
|
||||||
|
31 0.977408 -0.908592
|
||||||
|
32 0.919546 3.25464
|
||||||
|
33 0.972194 2.44956
|
||||||
|
34 0.92852 5.44745
|
||||||
|
35 0.947098 1.40531
|
||||||
|
36 0.875491 -1.13145
|
||||||
|
37 1 0
|
||||||
|
38 0.970862 2.86019
|
||||||
|
39 1 0
|
||||||
|
40 0.91793 -3.80615
|
||||||
|
41 0.913897 -2.12964
|
||||||
|
42 0.954014 -0.760604
|
||||||
|
43 0.993616 -1.40278
|
||||||
|
44 1 0
|
||||||
|
45 0.926169 -21.2016
|
||||||
|
46 1.00577 -2.14281
|
||||||
|
47 0.943312 -1.26464
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
#Histogram Number Slope Intercept
|
|
||||||
0 0.937314 -16.871
|
|
||||||
1 0 0
|
|
||||||
2 0.965461 -1.54376
|
|
||||||
3 0.926501 -3.27662
|
|
||||||
4 0.905634 2.54577
|
|
||||||
5 0.905634 -11.0387
|
|
||||||
6 0.853919 6.23079
|
|
||||||
7 0.945588 -9.54044
|
|
||||||
8 0.884454 -11.8262
|
|
||||||
9 0.922501 -3.42538
|
|
||||||
10 0.903053 9.28069
|
|
||||||
11 0.914653 9.87642
|
|
||||||
12 0.965332 13.2526
|
|
||||||
13 0.923847 -3.41775
|
|
||||||
14 0.93845 25.9901
|
|
||||||
15 0.955424 12.324
|
|
||||||
16 0.95116 4.99595
|
|
||||||
17 0.910745 2.86648
|
|
||||||
18 0.941376 4.57217
|
|
||||||
19 0.871622 932.111
|
|
||||||
20 1.00624 7.86358
|
|
||||||
21 0.969834 -45.001
|
|
||||||
22 0.89304 -31.5635
|
|
||||||
23 0.933226 4.02193
|
|
||||||
24 0 0
|
|
||||||
25 0.941896 6.16135
|
|
||||||
26 0.980284 2.86886
|
|
||||||
27 0.983166 -3.82952
|
|
||||||
28 0.978704 -2.89713
|
|
||||||
29 0.964947 2.25786
|
|
||||||
30 0.94514 0.925074
|
|
||||||
31 0.977231 1.6493
|
|
||||||
32 0.919527 5.82742
|
|
||||||
33 0.972243 2.88061
|
|
||||||
34 0.928892 7.61384
|
|
||||||
35 0.947376 -0.644223
|
|
||||||
36 0.875342 6.066
|
|
||||||
37 0 0
|
|
||||||
38 0.970953 6.262
|
|
||||||
39 0 0
|
|
||||||
40 0.918408 -3.27891
|
|
||||||
41 0.913619 4.11288
|
|
||||||
42 0.954083 2.21261
|
|
||||||
43 0.993037 5.48924
|
|
||||||
44 0 0
|
|
||||||
45 0.926406 -19.719
|
|
||||||
46 1.00459 5.14574
|
|
||||||
47 0.942483 5.54183
|
|
||||||
1
slope_intercept_results_17F.dat
Symbolic link
1
slope_intercept_results_17F.dat
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
pccal/pc_gm_coeffs.dat
|
||||||
1
slope_intercept_results_17F.txt
Symbolic link
1
slope_intercept_results_17F.txt
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
pccal/pc_gm_coeffs.dat
|
||||||
49
slope_intercept_results_26Al.txt
Normal file
49
slope_intercept_results_26Al.txt
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
0 0.931015 -1.35431
|
||||||
|
1 1 -1.87356e-10
|
||||||
|
2 0.964185 1.49989
|
||||||
|
3 0.92638 -1.30621
|
||||||
|
4 0.905569 1.00834
|
||||||
|
5 0.901182 0.470903
|
||||||
|
6 0.853932 3.32687
|
||||||
|
7 0.942785 1.08887
|
||||||
|
8 0.878904 -0.0107433
|
||||||
|
9 0.922662 -2.32259
|
||||||
|
10 0.903343 8.38332
|
||||||
|
11 0.914227 6.56108
|
||||||
|
12 0.961008 23.0982
|
||||||
|
13 0.920976 5.22104
|
||||||
|
14 0.936584 31.5073
|
||||||
|
15 0.959044 5.43267
|
||||||
|
16 0.95263 -0.404053
|
||||||
|
17 0.90953 4.82833
|
||||||
|
18 0.940277 10.3629
|
||||||
|
19 0.86746 -17.8678
|
||||||
|
20 1.00683 4.76371
|
||||||
|
21 0.968342 -43.9496
|
||||||
|
22 0.892882 -32.0742
|
||||||
|
23 0.933615 1.10704
|
||||||
|
24 1 -2.89219e-10
|
||||||
|
25 0.942098 -0.105169
|
||||||
|
26 0.980862 -0.732032
|
||||||
|
27 0.982975 -2.22704
|
||||||
|
28 0.978815 -1.51477
|
||||||
|
29 0.965245 -2.19515
|
||||||
|
30 0.945384 -0.892599
|
||||||
|
31 0.977408 -0.908592
|
||||||
|
32 0.919546 3.25464
|
||||||
|
33 0.972194 2.44956
|
||||||
|
34 0.92852 5.44745
|
||||||
|
35 0.947098 1.40531
|
||||||
|
36 0.875491 -1.13145
|
||||||
|
37 1 0
|
||||||
|
38 0.970862 2.86019
|
||||||
|
39 1 0
|
||||||
|
40 0.91793 -3.80615
|
||||||
|
41 0.913897 -2.12964
|
||||||
|
42 0.954014 -0.760604
|
||||||
|
43 0.993616 -1.40278
|
||||||
|
44 1 0
|
||||||
|
45 0.926169 -21.2016
|
||||||
|
46 1.00577 -2.14281
|
||||||
|
47 0.943312 -1.26464
|
||||||
49
slope_intercept_results_27Al.dat
Normal file
49
slope_intercept_results_27Al.dat
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
0 0.931015 -1.35431
|
||||||
|
1 1 -1.87356e-10
|
||||||
|
2 0.964185 1.49989
|
||||||
|
3 0.92638 -1.30621
|
||||||
|
4 0.905569 1.00834
|
||||||
|
5 0.901182 0.470903
|
||||||
|
6 0.853932 3.32687
|
||||||
|
7 0.942785 1.08887
|
||||||
|
8 0.878904 -0.0107433
|
||||||
|
9 0.922662 -2.32259
|
||||||
|
10 0.903343 8.38332
|
||||||
|
11 0.914227 6.56108
|
||||||
|
12 0.961008 23.0982
|
||||||
|
13 0.920976 5.22104
|
||||||
|
14 0.936584 31.5073
|
||||||
|
15 0.959044 5.43267
|
||||||
|
16 0.95263 -0.404053
|
||||||
|
17 0.90953 4.82833
|
||||||
|
18 0.940277 10.3629
|
||||||
|
19 0.86746 -17.8678
|
||||||
|
20 1.00683 4.76371
|
||||||
|
21 0.968342 -43.9496
|
||||||
|
22 0.892882 -32.0742
|
||||||
|
23 0.933615 1.10704
|
||||||
|
24 1 -2.89219e-10
|
||||||
|
25 0.942098 -0.105169
|
||||||
|
26 0.980862 -0.732032
|
||||||
|
27 0.982975 -2.22704
|
||||||
|
28 0.978815 -1.51477
|
||||||
|
29 0.965245 -2.19515
|
||||||
|
30 0.945384 -0.892599
|
||||||
|
31 0.977408 -0.908592
|
||||||
|
32 0.919546 3.25464
|
||||||
|
33 0.972194 2.44956
|
||||||
|
34 0.92852 5.44745
|
||||||
|
35 0.947098 1.40531
|
||||||
|
36 0.875491 -1.13145
|
||||||
|
37 1 0
|
||||||
|
38 0.970862 2.86019
|
||||||
|
39 1 0
|
||||||
|
40 0.91793 -3.80615
|
||||||
|
41 0.913897 -2.12964
|
||||||
|
42 0.954014 -0.760604
|
||||||
|
43 0.993616 -1.40278
|
||||||
|
44 1 0
|
||||||
|
45 0.926169 -21.2016
|
||||||
|
46 1.00577 -2.14281
|
||||||
|
47 0.943312 -1.26464
|
||||||
49
slope_intercept_results_27Al.txt
Normal file
49
slope_intercept_results_27Al.txt
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
0 0.931015 -1.35431
|
||||||
|
1 1 -1.87356e-10
|
||||||
|
2 0.964185 1.49989
|
||||||
|
3 0.92638 -1.30621
|
||||||
|
4 0.905569 1.00834
|
||||||
|
5 0.901182 0.470903
|
||||||
|
6 0.853932 3.32687
|
||||||
|
7 0.942785 1.08887
|
||||||
|
8 0.878904 -0.0107433
|
||||||
|
9 0.922662 -2.32259
|
||||||
|
10 0.903343 8.38332
|
||||||
|
11 0.914227 6.56108
|
||||||
|
12 0.961008 23.0982
|
||||||
|
13 0.920976 5.22104
|
||||||
|
14 0.936584 31.5073
|
||||||
|
15 0.959044 5.43267
|
||||||
|
16 0.95263 -0.404053
|
||||||
|
17 0.90953 4.82833
|
||||||
|
18 0.940277 10.3629
|
||||||
|
19 0.86746 -17.8678
|
||||||
|
20 1.00683 4.76371
|
||||||
|
21 0.968342 -43.9496
|
||||||
|
22 0.892882 -32.0742
|
||||||
|
23 0.933615 1.10704
|
||||||
|
24 1 -2.89219e-10
|
||||||
|
25 0.942098 -0.105169
|
||||||
|
26 0.980862 -0.732032
|
||||||
|
27 0.982975 -2.22704
|
||||||
|
28 0.978815 -1.51477
|
||||||
|
29 0.965245 -2.19515
|
||||||
|
30 0.945384 -0.892599
|
||||||
|
31 0.977408 -0.908592
|
||||||
|
32 0.919546 3.25464
|
||||||
|
33 0.972194 2.44956
|
||||||
|
34 0.92852 5.44745
|
||||||
|
35 0.947098 1.40531
|
||||||
|
36 0.875491 -1.13145
|
||||||
|
37 1 0
|
||||||
|
38 0.970862 2.86019
|
||||||
|
39 1 0
|
||||||
|
40 0.91793 -3.80615
|
||||||
|
41 0.913897 -2.12964
|
||||||
|
42 0.954014 -0.760604
|
||||||
|
43 0.993616 -1.40278
|
||||||
|
44 1 0
|
||||||
|
45 0.926169 -21.2016
|
||||||
|
46 1.00577 -2.14281
|
||||||
|
47 0.943312 -1.26464
|
||||||
21
slope_intercept_results_anode.txt
Normal file
21
slope_intercept_results_anode.txt
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
Histogram Number Slope Intercept
|
||||||
|
1 1 -1.87356e-10
|
||||||
|
2 0.964185 1.49989
|
||||||
|
3 0.92638 -1.30621
|
||||||
|
4 0.905569 1.00834
|
||||||
|
5 0.901182 0.470903
|
||||||
|
7 0.942785 1.08887
|
||||||
|
8 0.878904 -0.0107433
|
||||||
|
10 0.903343 8.38332
|
||||||
|
11 0.914227 6.56108
|
||||||
|
12 0.961008 23.0982
|
||||||
|
13 0.920976 5.22104
|
||||||
|
14 0.936584 31.5073
|
||||||
|
15 0.959044 5.43267
|
||||||
|
16 0.95263 -0.404053
|
||||||
|
17 0.90953 4.82833
|
||||||
|
18 0.940277 10.3629
|
||||||
|
20 1.00683 4.76371
|
||||||
|
21 0.968342 -43.9496
|
||||||
|
22 0.892882 -32.0742
|
||||||
|
23 0.933615 1.10704
|
||||||
Loading…
Reference in New Issue
Block a user