201 lines
6.2 KiB
C
201 lines
6.2 KiB
C
|
//////////////////////////////////////////////////////////
|
||
|
// This class has been automatically generated on
|
||
|
// Mon Dec 13 18:37:46 2021 by ROOT version 6.24/06
|
||
|
// from TTree tree/tree
|
||
|
// found on file: efEu152b-000.root
|
||
|
//////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef PreAnalyzer_h
|
||
|
#define PreAnalyzer_h
|
||
|
|
||
|
#include <fstream>
|
||
|
#include <TROOT.h>
|
||
|
#include <TChain.h>
|
||
|
#include <TFile.h>
|
||
|
#include <TSelector.h>
|
||
|
#include <TStopwatch.h>
|
||
|
#include <TMacro.h>
|
||
|
#include <vector>
|
||
|
|
||
|
#include "mapping.h"
|
||
|
#include "armory/AnalysisLibrary.h"
|
||
|
|
||
|
// Header file for the classes stored in the TTree if any.'
|
||
|
|
||
|
#define MAX_MULTI 200
|
||
|
|
||
|
class PreAnalyzer : public TSelector {
|
||
|
public :
|
||
|
TTree *fChain; //!pointer to the analyzed TTree or TChain
|
||
|
|
||
|
// Fixed size dimensions of array or collections stored in the TTree if any.
|
||
|
|
||
|
// Declaration of leaf types
|
||
|
ULong64_t evID;
|
||
|
Int_t runID;
|
||
|
Int_t detID[MAX_MULTI];
|
||
|
Double_t e[MAX_MULTI];
|
||
|
ULong64_t e_t[MAX_MULTI];
|
||
|
Int_t qdc[MAX_MULTI][8];
|
||
|
Int_t multi;
|
||
|
Int_t multiCry;
|
||
|
Int_t multiGagg;
|
||
|
Bool_t pileup[MAX_MULTI];
|
||
|
|
||
|
// List of branches
|
||
|
TBranch *b_event_ID; //!
|
||
|
TBranch *b_runID; //!
|
||
|
TBranch *b_detID; //!
|
||
|
TBranch *b_energy; //!
|
||
|
TBranch *b_time; //!
|
||
|
TBranch *b_qdc; //!
|
||
|
TBranch *b_multi; //!
|
||
|
TBranch *b_multiCry; //!
|
||
|
TBranch *b_multiGagg; //!
|
||
|
TBranch *b_pileup; //!
|
||
|
|
||
|
PreAnalyzer(TTree * /*tree*/ =0) : fChain(0) { totnumEntry = 0;
|
||
|
Frac = 0.1;
|
||
|
ProcessedEntries = 0;
|
||
|
}
|
||
|
virtual ~PreAnalyzer() { }
|
||
|
virtual Int_t Version() const { return 2; }
|
||
|
virtual void Begin(TTree *tree);
|
||
|
virtual void SlaveBegin(TTree *tree);
|
||
|
virtual void Init(TTree *tree);
|
||
|
virtual Bool_t Notify();
|
||
|
virtual Bool_t Process(Long64_t entry);
|
||
|
virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0) { return fChain ? fChain->GetTree()->GetEntry(entry, getall) : 0; }
|
||
|
virtual void SetOption(const char *option) { fOption = option; }
|
||
|
virtual void SetObject(TObject *obj) { fObject = obj; }
|
||
|
virtual void SetInputList(TList *input) { fInput = input; }
|
||
|
virtual TList *GetOutputList() const { return fOutput; }
|
||
|
virtual void SlaveTerminate();
|
||
|
virtual void Terminate();
|
||
|
|
||
|
ClassDef(PreAnalyzer,0);
|
||
|
|
||
|
ULong64_t totnumEntry;
|
||
|
|
||
|
vector<vector<double>> eCorr;
|
||
|
|
||
|
ULong64_t ProcessedEntries;
|
||
|
Float_t Frac; ///Progress bar
|
||
|
TStopwatch StpWatch;
|
||
|
|
||
|
double eCal[NCRYSTAL];
|
||
|
double gamma[NCLOVER]; // added-back energy
|
||
|
|
||
|
///========================= for new root file
|
||
|
TFile * saveFile;
|
||
|
TTree * newTree;
|
||
|
TString saveFileName;
|
||
|
|
||
|
///tree
|
||
|
ULong_t eventID;
|
||
|
Int_t runID_N;
|
||
|
int multi_N;
|
||
|
int multiGagg_N;
|
||
|
int gammaID[NCLOVER];
|
||
|
double gamma_N[NCLOVER];
|
||
|
ULong64_t gamma_t[NCLOVER];
|
||
|
int gaggID[NGAGG];
|
||
|
double gagg_peak[NGAGG];
|
||
|
double gagg_tail[NGAGG];
|
||
|
ULong64_t gagg_t[NGAGG];
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef PreAnalyzer_cxx
|
||
|
void PreAnalyzer::Init(TTree *tree)
|
||
|
{
|
||
|
// The Init() function is called when the selector needs to initialize
|
||
|
// a new tree or chain. Typically here the branch addresses and branch
|
||
|
// pointers of the tree will be set.
|
||
|
// It is normally not necessary to make changes to the generated
|
||
|
// code, but the routine can be extended by the user if needed.
|
||
|
// Init() will be called many times when running on PROOF
|
||
|
// (once per file to be processed).
|
||
|
|
||
|
// Set branch addresses and branch pointers
|
||
|
if (!tree) return;
|
||
|
fChain = tree;
|
||
|
fChain->SetMakeClass(1);
|
||
|
|
||
|
fChain->SetBranchAddress("evID", &evID, &b_event_ID);
|
||
|
fChain->SetBranchAddress("runID", &runID, &b_runID);
|
||
|
fChain->SetBranchAddress("detID", detID, &b_detID);
|
||
|
fChain->SetBranchAddress("e", e, &b_energy);
|
||
|
fChain->SetBranchAddress("e_t", e_t, &b_time);
|
||
|
fChain->SetBranchAddress("qdc", qdc, &b_qdc);
|
||
|
fChain->SetBranchAddress("multi", &multi, &b_multi);
|
||
|
fChain->SetBranchAddress("multiCry", &multiCry, &b_multiCry);
|
||
|
fChain->SetBranchAddress("multiGagg", &multiGagg, &b_multiGagg);
|
||
|
fChain->SetBranchAddress("pileup", pileup, &b_pileup);
|
||
|
|
||
|
TString option = GetOption();
|
||
|
|
||
|
printf("======================== Load parameters.\n");
|
||
|
eCorr = LoadCorrectionParameters("correction_e.dat");
|
||
|
|
||
|
///======================== open a new file
|
||
|
saveFileName = "haha.root";
|
||
|
|
||
|
saveFile = new TFile( saveFileName,"recreate");
|
||
|
|
||
|
TMacro e_corr("correction_e.dat");
|
||
|
e_corr.Write("correction_e");
|
||
|
|
||
|
newTree = new TTree("tree", "tree");
|
||
|
|
||
|
eventID = -1;
|
||
|
runID = 0;
|
||
|
|
||
|
multi_N = 0;
|
||
|
multiGagg_N = 0;
|
||
|
|
||
|
newTree->Branch("eventID", &eventID, "eventID/l");
|
||
|
newTree->Branch("runID", &runID_N, "runID/I");
|
||
|
newTree->Branch("multi", &multi_N, "multi/I");
|
||
|
newTree->Branch("multiGagg", &multiGagg_N, "multiGagg/I");
|
||
|
newTree->Branch("gammaID", gammaID, "gammaID[multi]/S");
|
||
|
newTree->Branch("gamma", gamma_N, "gamma[multi]/D");
|
||
|
newTree->Branch("gamma_t", gamma_t, "gamma_t[multi]/l");
|
||
|
newTree->Branch("gaggID", gaggID, "gaggID[multiGagg]/I");
|
||
|
newTree->Branch("gaggP", gagg_peak, "gaggP[multiGagg]/D");
|
||
|
newTree->Branch("gaggT", gagg_tail, "gaggT[multiGagg]/D");
|
||
|
newTree->Branch("gagg_t", gagg_t, "gagg_t[multiGagg]/l");
|
||
|
|
||
|
printf("======================== Start processing....\n");
|
||
|
StpWatch.Start();
|
||
|
|
||
|
}
|
||
|
|
||
|
Bool_t PreAnalyzer::Notify()
|
||
|
{
|
||
|
// The Notify() function is called when a new file is opened. This
|
||
|
// can be either for a new TTree in a TChain or when when a new TTree
|
||
|
// is started when using PROOF. It is normally not necessary to make changes
|
||
|
// to the generated code, but the routine can be extended by the
|
||
|
// user if needed. The return value is currently not used.
|
||
|
|
||
|
return kTRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void PreAnalyzer::SlaveBegin(TTree * /*tree*/){
|
||
|
|
||
|
TString option = GetOption();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void PreAnalyzer::SlaveTerminate(){
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif // #ifdef PreAnalyzer_cxx
|