159 lines
3.4 KiB
C++
159 lines
3.4 KiB
C++
//---------------------------------------------------------------------------
|
|
// version: v1.0
|
|
// code log:
|
|
// 1) read and study on the BluetFactory output data in BluetDataModel format
|
|
// 2) get the phi30 beam profile from 6Li(n,t) in the low energy region
|
|
// 3) get drift velocity
|
|
// author: yih@ihep.ac.cn
|
|
// date: 2023-04-04
|
|
//--------------------------------------------------------------------------
|
|
|
|
// #include "../../sources/config/include/BluetDataModel.hh"
|
|
|
|
#include "ROOT/TDataFrame.hxx"
|
|
#include "TApplication.h"
|
|
#include "TChain.h"
|
|
#include "TF1.h"
|
|
#include "TF2.h"
|
|
#include "TGTab.h"
|
|
#include "TH1F.h"
|
|
#include "TH2F.h"
|
|
#include "TInterpreter.h"
|
|
|
|
#include "fmt/core.h"
|
|
#include "string"
|
|
|
|
#include "BluetDataModel.hh"
|
|
|
|
const int sizeX = 1200;
|
|
const int sizeY = 1200;
|
|
const double rBeam = 35. / 2;
|
|
const double rTarget = 73. / 2;
|
|
const double rSubstrate = 89. / 2;
|
|
const double rPCB = rSubstrate + 10.;
|
|
|
|
class BluetAnalyzer {
|
|
public:
|
|
BluetAnalyzer() {
|
|
// Declare main frame
|
|
int argc = 0;
|
|
char **argv = nullptr;
|
|
app = new TApplication("app", &argc, argv);
|
|
mFrame = new TGMainFrame(gClient->GetRoot(), sizeX, sizeY);
|
|
mTab = new TGTab(mFrame, sizeX, sizeY);
|
|
mFrame->AddFrame(mTab, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
|
|
|
|
// Declare Data Models
|
|
const string bluetBase = getenv("bluet_base");
|
|
const string datamodel = fmt::format(
|
|
"#include \"{}/sources/config/include/BluetDataModel.hh\"", bluetBase);
|
|
gInterpreter->Declare(datamodel.c_str());
|
|
};
|
|
~BluetAnalyzer();
|
|
|
|
private:
|
|
TApplication *app;
|
|
TGMainFrame *mFrame;
|
|
TGTab *mTab;
|
|
|
|
double sidelength;
|
|
int Nlayer;
|
|
double driftL;
|
|
double kickdT;
|
|
double flighL;
|
|
double sampleT;
|
|
|
|
bool cutEnable;
|
|
double EcutMin;
|
|
double EcutMax;
|
|
double tofCutMin;
|
|
double tofCutMax;
|
|
double stampCutMin;
|
|
double stampCutMax;
|
|
double cathAmpCutMin;
|
|
double cathAmpCutMax;
|
|
double cathTimeCutMax;
|
|
double cathTimeCutMin;
|
|
double meshAmpCutMin;
|
|
double meshAmpCutMax;
|
|
double meshTimeCutMax;
|
|
double meshTimeCutMin;
|
|
int NtrkCutMin;
|
|
int NtrkCutMax;
|
|
double lengthCutMin;
|
|
double lengthCutMax;
|
|
bool rCut;
|
|
double rCutMin;
|
|
double rCutMax;
|
|
double cosCutMin;
|
|
|
|
double CenterPos[2];
|
|
double sliceW;
|
|
|
|
TF1 *fbeam1;
|
|
TF2 *fbeam2;
|
|
TF1 *fbeamr;
|
|
TF1 *fdgaus;
|
|
|
|
TChain *eventTree = new TChain("eventTree");
|
|
BluetEvent *fEvent = nullptr;
|
|
int Nevent;
|
|
|
|
int Nbin;
|
|
double tmin;
|
|
double tmax;
|
|
int Nrbin;
|
|
double rmax;
|
|
double *Sbin;
|
|
TH2F *hprofile;
|
|
TH1F *hslicex;
|
|
TH1F *hslicey;
|
|
TH1F *hbeamr;
|
|
TH1F *hrinte;
|
|
TH2F *htofE;
|
|
TH1F *htof;
|
|
TH1F *htofr0;
|
|
TH1F *htofr1;
|
|
TH1F *hpull;
|
|
TH1F *hratio;
|
|
TH2F *hLengthE;
|
|
TH1F *htcath;
|
|
TH1F *htpad;
|
|
TH1F *hv0;
|
|
TH1F *hv1;
|
|
TH1F *hcos;
|
|
TH1F *hphi;
|
|
TH2F *hdeltacos1;
|
|
TH2F *hdeltacos2;
|
|
TH2F *hts;
|
|
TH2F *htn;
|
|
TH2F *hamp;
|
|
TH2F *han;
|
|
TH2F *hta;
|
|
TH2F *htt;
|
|
TH2F *hte;
|
|
TH1F *hec;
|
|
|
|
public:
|
|
void readCutParameters(string cfgfile);
|
|
void defineFitFunctions();
|
|
void defineHistograms();
|
|
bool isGoodEvent(BluetEvent *event);
|
|
bool isGoodTrack(BluetTrack *track);
|
|
void readTreeData(vector<string> files);
|
|
void FillHistograms();
|
|
void postOperations();
|
|
void saveHistograms(TString filename);
|
|
void drawHistograms();
|
|
|
|
private:
|
|
void drawVertex();
|
|
void drawTOF();
|
|
void drawDrift();
|
|
void drawAngle();
|
|
void draw1DFeatures();
|
|
void draw2DFeatures();
|
|
void drawPadFeatures();
|
|
// void drawExcitationCurve();
|
|
};
|