adding RDT Cuts... not tested
This commit is contained in:
parent
9c2f52009a
commit
19a567f8fc
|
@ -55,14 +55,22 @@ public:
|
||||||
~MonPlotter();
|
~MonPlotter();
|
||||||
|
|
||||||
void SetUpCanvas(TString title, int padSize, int divX, int divY);
|
void SetUpCanvas(TString title, int padSize, int divX, int divY);
|
||||||
void SetUpHistograms(int * rawEnergyRange, int * energyRange, double * exRange, int * thetaCMRange, int * rdtDERange, int * rdtERange);
|
void SetUpHistograms(int * rawEnergyRange,
|
||||||
|
int * energyRange,
|
||||||
|
double * exRange,
|
||||||
|
int * thetaCMRange,
|
||||||
|
int * rdtDERange,
|
||||||
|
int * rdtERange,
|
||||||
|
int * coinTimeRange);
|
||||||
|
|
||||||
|
void LoadRDTGate(TString rdtCutFile);
|
||||||
|
|
||||||
void Plot();
|
void Plot();
|
||||||
|
|
||||||
void PlotRaw(bool isLog = false);
|
void PlotRaw(bool isLog = false);
|
||||||
void PlotCal();
|
void PlotCal();
|
||||||
void PlotEZ();
|
void PlotEZ();
|
||||||
// void PlotEx();
|
void PlotEx();
|
||||||
|
|
||||||
TCanvas * canvas;
|
TCanvas * canvas;
|
||||||
|
|
||||||
|
@ -90,8 +98,14 @@ public:
|
||||||
TH2F * hrdt_ID;
|
TH2F * hrdt_ID;
|
||||||
TH1F ** hrdt; // single recoil
|
TH1F ** hrdt; // single recoil
|
||||||
|
|
||||||
|
TH1I * hrdtMulti;
|
||||||
|
|
||||||
TH2F ** hrdt2D;
|
TH2F ** hrdt2D;
|
||||||
TH2F ** hrdt2Dg;
|
TH2F ** hrdt2Dg; // gated
|
||||||
|
|
||||||
|
//====== tDiff
|
||||||
|
TH1F * htDiff;
|
||||||
|
TH1F * htDiffg;
|
||||||
|
|
||||||
//====== Ex data
|
//====== Ex data
|
||||||
TH1F * hEx;
|
TH1F * hEx;
|
||||||
|
@ -104,6 +118,9 @@ public:
|
||||||
TH2F * hEx_ThetaCM;
|
TH2F * hEx_ThetaCM;
|
||||||
//=======================
|
//=======================
|
||||||
|
|
||||||
|
//======= Recoil Cut
|
||||||
|
TObjArray * cutList;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
unsigned short aID;
|
unsigned short aID;
|
||||||
|
@ -138,6 +155,7 @@ MonPlotter::MonPlotter(unsigned short arrayID, DetGeo * detGeo, int numRDT){
|
||||||
zRange[1] = detGeo->array[aID].zMax + 50;
|
zRange[1] = detGeo->array[aID].zMax + 50;
|
||||||
|
|
||||||
canvas = nullptr;
|
canvas = nullptr;
|
||||||
|
cutList = nullptr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,6 +179,10 @@ MonPlotter::~MonPlotter(){
|
||||||
delete hExCut2;
|
delete hExCut2;
|
||||||
|
|
||||||
delete hrdt_ID;
|
delete hrdt_ID;
|
||||||
|
delete hrdtMulti;
|
||||||
|
|
||||||
|
delete htDiff;
|
||||||
|
delete htDiffg;
|
||||||
|
|
||||||
for( int i = 0; i < numDet ; i++ ){
|
for( int i = 0; i < numDet ; i++ ){
|
||||||
delete he[i];
|
delete he[i];
|
||||||
|
@ -196,6 +218,9 @@ MonPlotter::~MonPlotter(){
|
||||||
delete [] hrdt2D;
|
delete [] hrdt2D;
|
||||||
delete [] hrdt2Dg;
|
delete [] hrdt2Dg;
|
||||||
|
|
||||||
|
delete cutG;
|
||||||
|
delete cutList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonPlotter::SetUpCanvas(TString title, int padSize, int divX, int divY){
|
void MonPlotter::SetUpCanvas(TString title, int padSize, int divX, int divY){
|
||||||
|
@ -234,7 +259,13 @@ template<typename T> void MonPlotter::CreateListOfHist2D(T ** &histList,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonPlotter::SetUpHistograms(int * rawEnergyRange, int * energyRange, double * exRange, int * thetaCMRange, int * rdtDERange, int * rdtERange){
|
void MonPlotter::SetUpHistograms(int * rawEnergyRange,
|
||||||
|
int * energyRange,
|
||||||
|
double * exRange,
|
||||||
|
int * thetaCMRange,
|
||||||
|
int * rdtDERange,
|
||||||
|
int * rdtERange,
|
||||||
|
int * coinTimeRange){
|
||||||
|
|
||||||
he_ID = new TH2F("he_ID" + suffix, "Raw e vs array ID; Array ID; Raw e", numDet, 0, numDet, 200, rawEnergyRange[0], rawEnergyRange[1]);
|
he_ID = new TH2F("he_ID" + suffix, "Raw e vs array ID; Array ID; Raw e", numDet, 0, numDet, 200, rawEnergyRange[0], rawEnergyRange[1]);
|
||||||
hxf_ID = new TH2F("hxf_ID" + suffix, "Raw xf vs array ID; Array ID; Raw xf", numDet, 0, numDet, 200, rawEnergyRange[0], rawEnergyRange[1]);
|
hxf_ID = new TH2F("hxf_ID" + suffix, "Raw xf vs array ID; Array ID; Raw xf", numDet, 0, numDet, 200, rawEnergyRange[0], rawEnergyRange[1]);
|
||||||
|
@ -267,6 +298,8 @@ void MonPlotter::SetUpHistograms(int * rawEnergyRange, int * energyRange, double
|
||||||
|
|
||||||
hrdt_ID = new TH2F("hrdt_ID" + suffix, "Raw RDT vs ID; ID; Raw RDT", numRDT, 0, numRDT, 400, rdtRange[0], rdtRange[1]);
|
hrdt_ID = new TH2F("hrdt_ID" + suffix, "Raw RDT vs ID; ID; Raw RDT", numRDT, 0, numRDT, 400, rdtRange[0], rdtRange[1]);
|
||||||
|
|
||||||
|
hrdtMulti = new TH1I("hrdtMulti" + suffix, "RDT Multiplicity", numRDT, 0, numRDT);
|
||||||
|
|
||||||
hrdt = new TH1F * [numRDT];
|
hrdt = new TH1F * [numRDT];
|
||||||
hrdt2D = new TH2F * [numRDT/2];
|
hrdt2D = new TH2F * [numRDT/2];
|
||||||
hrdt2Dg = new TH2F * [numRDT/2];
|
hrdt2Dg = new TH2F * [numRDT/2];
|
||||||
|
@ -283,6 +316,11 @@ void MonPlotter::SetUpHistograms(int * rawEnergyRange, int * energyRange, double
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//===================== tDiff = array_t - rdt_t
|
||||||
|
htDiff = new TH1F("htDiff" + suffix, "tDiff = e_t - rdt_t", (coinTimeRange[1]-coinTimeRange[0]), coinTimeRange[0], coinTimeRange[1]);
|
||||||
|
htDiffg = new TH1F("htDiffg" + suffix, "tDiff = e_t - rdt_t (gated)", (coinTimeRange[1]-coinTimeRange[0]), coinTimeRange[0], coinTimeRange[1]);
|
||||||
|
htDiffg->SetLineColor(2);
|
||||||
|
|
||||||
//===================== energy spectrum
|
//===================== energy spectrum
|
||||||
hEx = new TH1F("hEx" + suffix, Form("excitation spectrum w/ goodFlag; Ex [MeV] ; Count / %4.0f keV", exRange[0]), (int) (exRange[2]-exRange[1])/exRange[0]*1000, exRange[1], exRange[2]);
|
hEx = new TH1F("hEx" + suffix, Form("excitation spectrum w/ goodFlag; Ex [MeV] ; Count / %4.0f keV", exRange[0]), (int) (exRange[2]-exRange[1])/exRange[0]*1000, exRange[1], exRange[2]);
|
||||||
|
|
||||||
|
@ -309,18 +347,48 @@ void MonPlotter::SetUpHistograms(int * rawEnergyRange, int * energyRange, double
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonPlotter::Plot(){
|
void MonPlotter::Plot(){
|
||||||
|
for( int i = 1; i <= numPad; i++ ){
|
||||||
for( int i = 0; i < numPad; i++ ){
|
canvas->cd(i);
|
||||||
canvas->cd(i+1);
|
|
||||||
switch (i){
|
switch (i){
|
||||||
case 0: heCal_z->Draw("colz");break;
|
case 1: heCal_z->Draw("colz");break;
|
||||||
case 1: heCal_zGC->Draw("colz");break;
|
case 2: heCal_zGC->Draw("colz");break;
|
||||||
// case 2: hxn_ID->Draw("colz");break;
|
case 3: htDiff->Draw("");break;
|
||||||
|
case 4: hEx->Draw("colz");break;
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MonPlotter::LoadRDTGate(TString rdtCutFile){
|
||||||
|
|
||||||
|
if( rdtCutFile == "" ) return ;
|
||||||
|
|
||||||
|
TFile * fCut = new TFile(rdtCutFile);
|
||||||
|
bool isCutFileOpen = fCut->IsOpen();
|
||||||
|
if(!isCutFileOpen) {
|
||||||
|
printf( "Failed to open rdt-cutfile 1 : %s\n" , fileName.Data());
|
||||||
|
}else{
|
||||||
|
cutList = (TObjArray *) fCut->FindObjectAny("cutList");
|
||||||
|
|
||||||
|
if( cutList ){
|
||||||
|
int numCut = cutList->GetEntries();
|
||||||
|
printf("=========== found %d cutG in %s \n", numCut, fCut->GetName());
|
||||||
|
|
||||||
|
for(int i = 0; i < numCut ; i++){
|
||||||
|
printf("cut name : %s , VarX: %s, VarY: %s, numPoints: %d \n",
|
||||||
|
cutList->At(i)->GetName(),
|
||||||
|
((TCutG*)cutList->At(i))->GetVarX(),
|
||||||
|
((TCutG*)cutList->At(i))->GetVarY(),
|
||||||
|
((TCutG*)cutList->At(i))->GetN()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//^#######################################################
|
||||||
|
|
||||||
void MonPlotter::PlotRaw(bool isLog){
|
void MonPlotter::PlotRaw(bool isLog){
|
||||||
|
|
||||||
TCanvas * cRawID = new TCanvas("cRawID", Form("Raw e, Ring, xf, xn vs ID | %s", canvasTitle.Data()), 100 + 500 * aID, 100, 1200, 800);
|
TCanvas * cRawID = new TCanvas("cRawID", Form("Raw e, Ring, xf, xn vs ID | %s", canvasTitle.Data()), 100 + 500 * aID, 100, 1200, 800);
|
||||||
|
@ -424,7 +492,7 @@ void MonPlotter::PlotCal(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void MonPlotter::PlotEZ(){
|
void MonPlotter::PlotEZ(){
|
||||||
TCanvas *cecalVz = new TCanvas("cevalVz",Form("ECALVZ : %s", canvasTitle.Data()),1000, 650);
|
TCanvas *cecalVz = new TCanvas("cevalVz" + suffix,Form("ECALVZ : %s", canvasTitle.Data()),1000, 650);
|
||||||
cecalVz->Clear(); cecalVz->Divide(2,1);
|
cecalVz->Clear(); cecalVz->Divide(2,1);
|
||||||
gStyle->SetOptStat("neiou");
|
gStyle->SetOptStat("neiou");
|
||||||
cecalVz->cd(1);heCal_z->Draw("col");
|
cecalVz->cd(1);heCal_z->Draw("col");
|
||||||
|
@ -432,4 +500,36 @@ void MonPlotter::PlotEZ(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MonPlotter::PlotEx(){
|
||||||
|
|
||||||
|
TCanvas *cex = new TCanvas("cex" + suffix,Form("EX : %s", canvasTitle.Data()),0, 0, 1000,650);
|
||||||
|
cex->Clear();
|
||||||
|
gStyle->SetOptStat("neiou");
|
||||||
|
hEx->Draw("");
|
||||||
|
|
||||||
|
TCanvas *cexI = new TCanvas("cexI" + suffix,Form("EX : %s", canvasTitle.Data()),500, 0, 1600,1000);
|
||||||
|
cexI->Clear();cexI->Divide(colDet,rowDet);
|
||||||
|
gStyle->SetOptStat("neiou");
|
||||||
|
for( int i = 0; i < numDet; i++){
|
||||||
|
cexI->cd(i+1);
|
||||||
|
hExi[i]->Draw("");
|
||||||
|
}
|
||||||
|
|
||||||
|
TCanvas *cExThetaCM = new TCanvas("cExThetaCM" + suffix,Form("EX - ThetaCM | %s", canvasTitle.Data()), 500, 500, 650,650);
|
||||||
|
cExThetaCM->Clear();
|
||||||
|
gStyle->SetOptStat("neiou");
|
||||||
|
hEx_ThetaCM->Draw("colz");
|
||||||
|
|
||||||
|
TCanvas *cExVxCal = new TCanvas("cExVxCal" + suffix,Form("EX | %s", canvasTitle.Data()),200, 200, 1600,1000);
|
||||||
|
cExVxCal->Clear();
|
||||||
|
gStyle->SetOptStat("neiou");
|
||||||
|
cExVxCal->Divide(colDet,rowDet);
|
||||||
|
for( int i = 0; i < numDet; i++){
|
||||||
|
cExVxCal->cd(i+1);
|
||||||
|
hEx_xCal[i]->SetMarkerStyle(7);
|
||||||
|
hEx_xCal[i]->Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -32,19 +32,20 @@ int thetaCMRange[2] = {0, 80};
|
||||||
|
|
||||||
double exRange[3] = { 100, -2, 10}; /// bin [keV], low[MeV], high[MeV]
|
double exRange[3] = { 100, -2, 10}; /// bin [keV], low[MeV], high[MeV]
|
||||||
|
|
||||||
|
int coinTimeRange[2] = { -200, 200};
|
||||||
|
|
||||||
//---Gate
|
//---Gate
|
||||||
bool isTimeGateOn = true;
|
bool isTimeGateOn = true;
|
||||||
int timeGate[2] = {-20, 12}; /// min, max, 1 ch = 10 ns
|
int timeGate[2] = {-20, 12}; /// min, max, 1 ch = 10 ns
|
||||||
double eCalCut[2] = {0.5, 20}; /// lower & higher limit for eCal
|
double eCalCut[2] = {0.5, 20}; /// lower & higher limit for eCal
|
||||||
double xGate = 0.9; ///cut out the edge
|
double xGate = 0.9; ///cut out the edge
|
||||||
double thetaCMGate = 10; /// deg
|
double thetaCMGate = 10; /// deg
|
||||||
|
|
||||||
std::vector<int> skipDetID = {11} ;
|
std::vector<int> skipDetID = {11} ;
|
||||||
|
|
||||||
TString rdtCutFile1 = "";
|
std::vector<TString> rdtCutFile1 = {"", ""}; /// {reaction-0, reaction-1}, can add more for more reactions
|
||||||
TString rdtCutFile2 = "";
|
// TString rdtCutFile2 = "";
|
||||||
TString ezCutFile = "";//"ezCut.root";
|
// TString ezCutFile = "";//"ezCut.root";
|
||||||
|
|
||||||
//^############################################ end of user setting
|
//^############################################ end of user setting
|
||||||
|
|
||||||
|
@ -84,20 +85,28 @@ void MonAnalyzer(){
|
||||||
//TODO
|
//TODO
|
||||||
// TTreeReaderArray<TGraph> array = {reader, "trace"};
|
// TTreeReaderArray<TGraph> array = {reader, "trace"};
|
||||||
|
|
||||||
//*==========================================
|
|
||||||
ULong64_t NumEntries = chain->GetEntries();
|
ULong64_t NumEntries = chain->GetEntries();
|
||||||
|
|
||||||
|
//*==========================================
|
||||||
DetGeo * detGeo = new DetGeo("detectorGeo.txt");
|
DetGeo * detGeo = new DetGeo("detectorGeo.txt");
|
||||||
// TransferReaction * transfer = new TransferReaction("reactionConfig.txt");
|
|
||||||
numGeo = detGeo->numGeo;
|
numGeo = detGeo->numGeo;
|
||||||
printf("================== num. of Arrays : %d\n", numGeo);
|
printf("================== num. of Arrays : %d\n", numGeo);
|
||||||
|
|
||||||
int numTotArray = 0;
|
int numTotArray = 0;
|
||||||
detGeo->Print(1);
|
detGeo->Print(1);
|
||||||
for( size_t i = 0; i < detGeo->array.size(); i++ ){
|
for( size_t i = 0; i < detGeo->array.size(); i++ ){
|
||||||
if( detGeo->array[i].enable ) numTotArray += detGeo->array[i].numDet;
|
if( detGeo->array[i].enable ) numTotArray += detGeo->array[i].numDet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//*==========================================
|
||||||
|
TransferReaction * transfer = new TransferReaction[numGeo];
|
||||||
|
int tempCount = 0;
|
||||||
|
for( int i = 0; i < (int) detGeo->array.size() ; i++){
|
||||||
|
if( !detGeo->array[i].enable ) continue;
|
||||||
|
transfer[tempCount].SetReactionFromFile("reactionConfig.txt", i);
|
||||||
|
tempCount ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
//*==========================================
|
||||||
CorrParas * corr = new CorrParas;
|
CorrParas * corr = new CorrParas;
|
||||||
corr->LoadAllCorrections();
|
corr->LoadAllCorrections();
|
||||||
corr->CheckCorrParasSize(numTotArray, mapping::NRDT);
|
corr->CheckCorrParasSize(numTotArray, mapping::NRDT);
|
||||||
|
@ -106,7 +115,15 @@ void MonAnalyzer(){
|
||||||
for( int i = 0; i < numGeo; i++ ) {
|
for( int i = 0; i < numGeo; i++ ) {
|
||||||
plotter[i] = new MonPlotter(i, detGeo, mapping::NRDT);
|
plotter[i] = new MonPlotter(i, detGeo, mapping::NRDT);
|
||||||
plotter[i]->SetUpCanvas("haha", 500, 3, 2); //TODO canvaseTitle
|
plotter[i]->SetUpCanvas("haha", 500, 3, 2); //TODO canvaseTitle
|
||||||
plotter[i]->SetUpHistograms(rawEnergyRange, energyRange, exRange, thetaCMRange, rdtDERange, rdtERange);
|
plotter[i]->SetUpHistograms(rawEnergyRange, energyRange, exRange, thetaCMRange, rdtDERange, rdtERange, coinTimeRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
//*========================================== Load RDT Cuts
|
||||||
|
tempCount = 0;
|
||||||
|
for( int i = 0; i < (int) detGeo->array.size() ; i++){
|
||||||
|
if( !detGeo->array[i].enable ) continue;
|
||||||
|
plotter[tempCount]->LoadRDTGate(rdtCutFile1[i]);
|
||||||
|
tempCount ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO make the data class.
|
//TODO make the data class.
|
||||||
|
@ -130,6 +147,7 @@ void MonAnalyzer(){
|
||||||
//*============================================= Array;
|
//*============================================= Array;
|
||||||
int arrayMulti[numGeo] ; //array multiplicity, when any is calculated.
|
int arrayMulti[numGeo] ; //array multiplicity, when any is calculated.
|
||||||
for( int i = 0; i < numGeo; i++ ) arrayMulti[i] = 0;
|
for( int i = 0; i < numGeo; i++ ) arrayMulti[i] = 0;
|
||||||
|
bool rdtgate1 = false;
|
||||||
|
|
||||||
for( int id = 0; id < (int) e.GetSize() ; id++ ){
|
for( int id = 0; id < (int) e.GetSize() ; id++ ){
|
||||||
short aID = detGeo->GetArrayID(id);
|
short aID = detGeo->GetArrayID(id);
|
||||||
|
@ -212,58 +230,57 @@ void MonAnalyzer(){
|
||||||
plotter[aID]->heCal_z->Fill(z[id],eCal[id]);
|
plotter[aID]->heCal_z->Fill(z[id],eCal[id]);
|
||||||
|
|
||||||
//@=================== Recoil Gate
|
//@=================== Recoil Gate
|
||||||
// if( isRDTExist && (cutList1 || cutList2)){
|
if( plotter[aID]->cutList ){
|
||||||
// for(int i = 0 ; i < cutList1->GetEntries() ; i++ ){
|
for(int i = 0 ; i < cutList1->GetEntries() ; i++ ){
|
||||||
// cutG = (TCutG *)cutList1->At(i) ;
|
TCutG * cutG = (TCutG *)cutList1->At(i) ;
|
||||||
// if(cutG->IsInside(rdt[2*i],rdt[2*i+1])) {
|
if(cutG->IsInside(rdt[2*i],rdt[2*i+1])) {
|
||||||
// // if(cutG->IsInside(rdt[2*i] + rdt[2*i+1],rdt[2*i+1])) {
|
rdtgate1= true;
|
||||||
// rdtgate1= true;
|
break; /// only one is enough
|
||||||
// break; /// only one is enough
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
// for(int i = 0 ; i < cutList2->GetEntries() ; i++ ){
|
// for(int i = 0 ; i < cutList2->GetEntries() ; i++ ){
|
||||||
// cutG = (TCutG *)cutList2->At(i) ;
|
// cutG = (TCutG *)cutList2->At(i) ;
|
||||||
// if(cutG->IsInside(rdt[2*i],rdt[2*i+1])) {
|
// if(cutG->IsInside(rdt[2*i],rdt[2*i+1])) {
|
||||||
// //if(cutG->IsInside(rdt[2*i]+ rdt[2*i+1],rdt[2*i+1])) {
|
// //if(cutG->IsInside(rdt[2*i]+ rdt[2*i+1],rdt[2*i+1])) {
|
||||||
// rdtgate2= true;
|
// rdtgate2= true;
|
||||||
// break; /// only one is enough
|
// break; /// only one is enough
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }else{
|
}else{
|
||||||
// rdtgate1 = true;
|
rdtgate1 = true;
|
||||||
// rdtgate2 = true;
|
// rdtgate2 = true;
|
||||||
// }
|
}
|
||||||
|
|
||||||
//@================ coincident with Recoil when z is calculated.
|
//@================ coincident with Recoil when z is calculated.
|
||||||
// if( !TMath::IsNaN(z[id]) ) {
|
if( !TMath::IsNaN(z[id]) ) {
|
||||||
// for( int j = 0; j < mapping::NRDT ; j++){
|
for( int j = 0; j < mapping::NRDT ; j++){
|
||||||
// if( TMath::IsNaN(rdt[j]) ) continue;
|
if( TMath::IsNaN(rdt[j]) ) continue;
|
||||||
|
|
||||||
// int tdiff = rdt_t[j] - e_t[id];
|
int tdiff = rdt_t[j] - e_t[id];
|
||||||
|
|
||||||
// if( j%2 == 1) {
|
if( j%2 == 1) {
|
||||||
// htdiff->Fill(tdiff);
|
plotter[aID]->htDiff->Fill(tdiff);
|
||||||
// if((rdtgate1 || rdtgate2) && (eCalCut[1] > eCal[id] && eCal[id]>eCalCut[0])) {
|
// if((rdtgate1 || rdtgate2) && (eCalCut[1] > eCal[id] && eCal[id]>eCalCut[0])) {
|
||||||
// htdiffg->Fill(tdiff);
|
// plotter[aID]->htdiffg->Fill(tdiff);
|
||||||
// }
|
// }
|
||||||
// }
|
}
|
||||||
|
|
||||||
// hArrayRDTMatrix->Fill(id, j);
|
// hArrayRDTMatrix->Fill(id, j);
|
||||||
|
|
||||||
// if( isTimeGateOn && timeGate[0] < tdiff && tdiff < timeGate[1] ) {
|
// if( isTimeGateOn && timeGate[0] < tdiff && tdiff < timeGate[1] ) {
|
||||||
// if(j % 2 == 0 ) hrdt2Dg[j/2]->Fill(rdt[j],rdt[j+1]); /// x=E, y=dE
|
// if(j % 2 == 0 ) hrdt2Dg[j/2]->Fill(rdt[j],rdt[j+1]); /// x=E, y=dE
|
||||||
// ///if(j % 2 == 0 ) hrdt2Dg[j/2]->Fill(rdt[j+1],rdt[j]); /// x=dE, y=E
|
// ///if(j % 2 == 0 ) hrdt2Dg[j/2]->Fill(rdt[j+1],rdt[j]); /// x=dE, y=E
|
||||||
// hArrayRDTMatrixG->Fill(id, j);
|
// hArrayRDTMatrixG->Fill(id, j);
|
||||||
// ///if( rdtgate1) hArrayRDTMatrixG->Fill(id, j);
|
// ///if( rdtgate1) hArrayRDTMatrixG->Fill(id, j);
|
||||||
|
|
||||||
// hrdtg[j]->Fill(rdt[j]);
|
// hrdtg[j]->Fill(rdt[j]);
|
||||||
// coinFlag = true;
|
// coinFlag = true;
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if( !isTimeGateOn ) coinFlag = true;
|
// if( !isTimeGateOn ) coinFlag = true;
|
||||||
|
|
||||||
|
@ -283,56 +300,61 @@ void MonAnalyzer(){
|
||||||
// isGoodEventFlag = true;
|
// isGoodEventFlag = true;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
}//*====== end of array loop
|
}//*====== end of array loop
|
||||||
|
|
||||||
for( int i = 0 ; i < numGeo ; i++ ) plotter[i]->hArrayMulti->Fill(arrayMulti[i]);
|
for( int i = 0 ; i < numGeo ; i++ ) plotter[i]->hArrayMulti->Fill(arrayMulti[i]);
|
||||||
|
|
||||||
//*********** RECOILS ***********************************************/
|
//*********** RECOILS ***********************************************/
|
||||||
// for( int i = 0; i < mapping::NRDT ; i++){
|
//Fill both plotter
|
||||||
// hrdtID->Fill(i, rdt[i]);
|
int recoilMulti = 0;
|
||||||
// hrdt[i]->Fill(rdt[i]);
|
for( int j = 0; j < numGeo; j++ ){
|
||||||
|
for( int i = 0; i < mapping::NRDT ; i++){
|
||||||
|
plotter[j]->hrdt_ID->Fill(i, rdt[i]);
|
||||||
|
plotter[j]->hrdt[i]->Fill(rdt[i]);
|
||||||
|
|
||||||
|
recoilMulti++;
|
||||||
|
if( i % 2 == 0 ){
|
||||||
|
plotter[j]->hrdt2D[i/2]->Fill(rdt[i],rdt[i+1]); //E-dE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plotter[j]->hrdtMulti->Fill(recoilMulti);
|
||||||
|
}
|
||||||
|
|
||||||
// if( i % 2 == 0 ){
|
|
||||||
// recoilMulti++; // when both dE and E are hit
|
|
||||||
// hrdt2D[i/2]->Fill(rdt[i],rdt[i+1]); //E-dE
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
//@*********** Ex and thetaCM ****************************************/
|
//@*********** Ex and thetaCM ****************************************/
|
||||||
// for(Int_t id = 0; id < mapping::NARRAY ; id++){
|
for(Int_t id = 0; id < numTotArray ; id++){
|
||||||
|
|
||||||
// if( TMath::IsNaN(e[id]) ) continue ;
|
if( TMath::IsNaN(e[id]) ) continue ;
|
||||||
// if( TMath::IsNaN(z[id]) ) continue ;
|
if( TMath::IsNaN(z[id]) ) continue ;
|
||||||
// if( eCal[id] < eCalCut[0] ) continue ;
|
if( eCal[id] < eCalCut[0] ) continue ;
|
||||||
// if( eCal[id] > eCalCut[1] ) continue ;
|
if( eCal[id] > eCalCut[1] ) continue ;
|
||||||
|
|
||||||
// short aID = detGeo->GetArrayID(id);
|
short aID = detGeo->GetArrayID(id);
|
||||||
// if( aID < 0 ) continue;
|
if( aID < 0 ) continue;
|
||||||
|
|
||||||
// std::pair<double, double> ExThetaCM = transfer->CalExThetaCM(eCal[id], z[id], detGeo->Bfield, detGeo->array[aID].detPerpDist);
|
std::pair<double, double> ExThetaCM = transfer[aID].CalExThetaCM(eCal[id], z[id], detGeo->Bfield, detGeo->array[aID].detPerpDist);
|
||||||
// double Ex = ExThetaCM.first;
|
double Ex = ExThetaCM.first;
|
||||||
// double thetaCM = ExThetaCM.second;
|
double thetaCM = ExThetaCM.second;
|
||||||
|
|
||||||
// if( thetaCM > thetaCMGate ) {
|
if( thetaCM > thetaCMGate ) {
|
||||||
|
|
||||||
// plotter[aID]->hEx->Fill(Ex);
|
plotter[aID]->hEx->Fill(Ex);
|
||||||
// plotter[aID]->hExThetaCM->Fill(thetaCM, Ex);
|
plotter[aID]->hExi[id]->Fill(Ex);
|
||||||
|
plotter[aID]->hEx_xCal[id]->Fill(xCal[id], Ex);
|
||||||
|
plotter[aID]->hEx_ThetaCM->Fill(thetaCM, Ex);
|
||||||
|
|
||||||
// // if( rdtgate1 ) {
|
// if( rdtgate1 ) {
|
||||||
// // plotter[arrayID]->hExCut1->Fill(Ex);
|
// plotter[arrayID]->hExCut1->Fill(Ex);
|
||||||
// // plotter[arrayID]->hExThetaCM->Fill(thetaCM, Ex);
|
// plotter[arrayID]->hExThetaCM->Fill(thetaCM, Ex);
|
||||||
// // }
|
// }
|
||||||
// // if( rdtgate2 ) {
|
// if( rdtgate2 ) {
|
||||||
// // plotter[arrayID]->hExCut2->Fill(Ex);
|
// plotter[arrayID]->hExCut2->Fill(Ex);
|
||||||
// // plotter[arrayID]->hExThetaCM->Fill(thetaCM, Ex);
|
// plotter[arrayID]->hExThetaCM->Fill(thetaCM, Ex);
|
||||||
// // }
|
// }
|
||||||
|
|
||||||
// plotter[arrayID]->hExi[id]->Fill(Ex);
|
}
|
||||||
// plotter[arrayID]->hExVxCal[id]->Fill(xCal[id], Ex);
|
}
|
||||||
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
//*============================================ Progress Bar
|
//*============================================ Progress Bar
|
||||||
processedEntries ++;
|
processedEntries ++;
|
||||||
|
@ -353,9 +375,7 @@ void MonAnalyzer(){
|
||||||
gStyle->SetDateX(0);
|
gStyle->SetDateX(0);
|
||||||
gStyle->SetDateY(0);
|
gStyle->SetDateY(0);
|
||||||
|
|
||||||
|
//TODO, an easy method to config plotter::Plot()
|
||||||
|
|
||||||
|
|
||||||
for( int i = 0; i < detGeo->numGeo ; i++){
|
for( int i = 0; i < detGeo->numGeo ; i++){
|
||||||
plotter[i]->Plot();
|
plotter[i]->Plot();
|
||||||
}
|
}
|
||||||
|
@ -368,12 +388,12 @@ void MonAnalyzer(){
|
||||||
printf(" cal() - Calibrated data\n");
|
printf(" cal() - Calibrated data\n");
|
||||||
printf("-----------------------------------------------------\n");
|
printf("-----------------------------------------------------\n");
|
||||||
printf(" ez() - Energy vs. Z\n");
|
printf(" ez() - Energy vs. Z\n");
|
||||||
|
printf(" excite() - Excitation Energy\n");
|
||||||
// printf(" recoils() - Raw DE vs. E Recoil spectra\n");
|
// printf(" recoils() - Raw DE vs. E Recoil spectra\n");
|
||||||
//printf(" elum() - Luminosity Energy Spectra\n");
|
//printf(" elum() - Luminosity Energy Spectra\n");
|
||||||
//printf(" ic() - Ionization Chamber Spectra\n");
|
//printf(" ic() - Ionization Chamber Spectra\n");
|
||||||
// printf("-----------------------------------------------------\n");
|
// printf("-----------------------------------------------------\n");
|
||||||
// printf(" eCalVzRow() - Energy vs. Z for each row\n");
|
// printf(" eCalVzRow() - Energy vs. Z for each row\n");
|
||||||
// printf(" excite() - Excitation Energy\n");
|
|
||||||
// printf(" ExThetaCM() - Ex vs ThetaCM\n");
|
// printf(" ExThetaCM() - Ex vs ThetaCM\n");
|
||||||
// printf(" ExVxCal() - Ex vs X for all %d detectors\n", numDet);
|
// printf(" ExVxCal() - Ex vs X for all %d detectors\n", numDet);
|
||||||
// printf("-----------------------------------------------------\n");
|
// printf("-----------------------------------------------------\n");
|
||||||
|
@ -389,7 +409,6 @@ void MonAnalyzer(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//%=============================================
|
//%=============================================
|
||||||
void raw(bool isLog = false, int arrayID = -1){
|
void raw(bool isLog = false, int arrayID = -1){
|
||||||
if( arrayID < 0 ){
|
if( arrayID < 0 ){
|
||||||
|
@ -414,3 +433,11 @@ void ez(int arrayID = -1){
|
||||||
if( arrayID < numGeo) plotter[arrayID]->PlotEZ();
|
if( arrayID < numGeo) plotter[arrayID]->PlotEZ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void excited(int arrayID = -1){
|
||||||
|
if( arrayID < 0 ){
|
||||||
|
for( int i = 0; i < numGeo; i++ ) plotter[i]->PlotEx();
|
||||||
|
}else{
|
||||||
|
if( arrayID < numGeo) plotter[arrayID]->PlotEx();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user