BeAnalysis.h 4.44 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*
 * BeAnalysis.h
 *
 *  Created on: Jul 19, 2017
 *      Author: vratik
 */

#ifndef BE_BEANALYSIS_H_
#define BE_BEANALYSIS_H_

#include <iostream>

//#include <TObject.h>
#include "TChain.h"
15
#include "TCut.h"
16
#include "TCanvas.h"
17

18 19
#define NOINTERVALS 5;

20 21 22 23 24 25 26 27 28
using std::cout;
using std::endl;

class BeAnalysis {
public:
	BeAnalysis();
	virtual ~BeAnalysis();
	ClassDef(BeAnalysis, 1);

29 30 31 32 33 34 35 36
	void SetExpChain(TString files, Int_t minFnumber, Int_t maxFnumber);
	void SetSimChains(TString chainAl0name, TString chainNoAl0name,
			TString chainAl180name, TString chainNoAl180name,
			TString chainAl90name, TString chainNoAl90name);
	void SetInputChains(TString inputAl0name, TString inputNoAl0name,
			TString inputAl180name, TString inputNoAl180name,
			TString inputAl90name, TString inputNoAl90name);
	void SetNoSimFiles(Int_t *minFnumber = 0, Int_t *maxFnumber = 0);
37 38 39 40

	void OpenSimChains();
	void OpenExpChain();

41
	void SetNoBinsSpectra(Int_t noBins = 100) {noBinsSpectra = noBins;};
42
	void SetNoBinsCorrelations(Int_t noBins = 30) {noBinsCorr = noBins;};
43

44 45
	TChain* GetExpChain() {return che;};
	TChain* GetSimChain(Int_t i) {return chs[i];};
46 47
	void SetChainsToDraw(Bool_t ch0 = 1, Bool_t ch1 = 1, Bool_t ch2 = 1, Bool_t ch3 = 1, Bool_t ch4 = 1, Bool_t ch5 = 1);

48
	void SetSimCuts(TString sEt[5]/*, TString sET0 = "", TString sET1 = "", TString sET2 = "", TString sET3 = "", TString sET4 = ""*/);
49 50

	void SetCMAngularRange(Int_t minAngle, Int_t maxAngle);
51

52 53
	void SetRangeProportion(Float_t rangeProportion = 1.1, Bool_t autoRange = 1);

54 55
	void SetNoExpEvents(Long64_t *noExpEvents = 0);
	void SetNoSimEvents(Long64_t *noSimEvents = 0);
56 57 58
	void SetRatiosGStoEX(TString sRatioAl0, TString sRatioNoAl0,
			TString sRatioAl180, TString sRatioNoAl180,
			TString sRatioAl90, TString sRatioNoAl90);
59

60 61
	void ExpEventsECuts(Long64_t noExpEvents[5][6] = 0);
	void SimEventsECuts(Long64_t noSimEvents[5][6] = 0);
62
	void EpsilonTRange();
63

64
	void SetSpectra(Bool_t kSpectra = 1) {spectra = kSpectra;};
65 66 67 68 69 70
	void SetEpsilonTintervals(Bool_t intervals[6] = 0);
	void SetCosThetaTkIntervals(Bool_t intervals[6] = 0);
	void SetEpsilonYintervals(Bool_t intervals[6] = 0);
	void SetCosThetaYkIntervals(Bool_t intervals[6] = 0);
	void SetThetaATintervals(Bool_t intervals[6] = 0);

71
	void Spectra();
72
	void EpsilonT();
73 74 75 76 77
	void CosThetaTk();
	void EpsilonY();
	void CosThetaYk();
	void ThetaAT();

78 79
	void SetFigures(TString figPath = "figures/", TString figFormat = ".eps", Bool_t kSave = 1);

80 81
	void SaveSpectrumHist(Int_t chain);

82
	void SaveEpsilonTHist(Int_t interval, Int_t chain);
83
	void SaveCosThetaTHist(Int_t interval, Int_t chain);
84

85 86
	void SaveEpsilonYHist(Int_t interval, Int_t chain);

87

88
//
89
private:
90 91 92
	TChain *che;		//chain with experimental trees
	TChain *chs[6];		//array of chains with simulation trees
	TTree *ti[6];		//array of chains with simulation input
93
private:
94

95 96 97 98 99 100 101 102
	Int_t lowExpFile;
	Int_t upExpFile;
	TString expFiles;
	TString simFiles[6];
	TString inputFiles[6];
	Int_t lowSimFile[6];
	Int_t upSimFile[6];

103
	Int_t noBinsSpectra;
104
	Int_t noBinsCorr;
105

106 107 108
	Int_t kMinAngle;
	Int_t kMaxAngle;

109 110 111 112 113 114 115 116 117
//histograms
	TH1F *hsSpectra[6];
	TH1F *heSpectra[6];
	TH1F *hSdiff[6];

	TH1F *hseT[5][6];
	TH1F *heeT[5][6];
	TH1F *hieT[5][6];

118 119 120 121 122 123 124
	TH1F *hscoskT[5][6];
	TH1F *hecoskT[5][6];
	TH1F *hicoskT[5][6];

	TH1F *hseY[5][6];
	TH1F *heeY[5][6];
	TH1F *hieY[5][6];
125 126

//cuts
127 128 129 130
	TCut cAngles;
	TCut crAngles;

	Bool_t kChains[6];
131 132
	Int_t noIntervals;
	Bool_t *epsilonT;	//!
133 134
	Bool_t *cosThetaT;	//!
	Bool_t *epsilonY;	//!
135
	Bool_t *cosThetaY;	//!
136

137 138
	Bool_t *thetaAT;	//!

139 140
	Bool_t kAutoRange;
	Float_t kRangeProportion;
141 142
	Bool_t kVerbose;
	Float_t kRangeProportionIn;
143 144 145 146 147 148 149 150 151

	Long64_t eMaxEvents;
	Long64_t eEvents[6];

	Long64_t sMaxEvents;
	Long64_t sEvents[6];

	TCut sRatio[6];

152 153 154
	Long64_t eEventsECuts[5][6];		//!
	Long64_t sEventsECuts[5][6];		//!
	Double_t eTRange[5][6];				//!
155

156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
	//cuts
	TCut cBeWork;
	TCut cBeE[5];

	TCut cEpsilonT;
	TCut cEpsilonY;

	//raw files
	//energy cuts
	TCut crBeWork;
	TCut crBeE[5];
	//angular cuts

	TCut crEpsilonT;
	TCut crEpsilonY;

	//simulation input
	TCut ciBeE[5];

	TCut ciEpsilon;
176
//	TCut ciEpsilonY;
177 178 179 180 181 182 183 184 185 186

	TCut cQ;
	TCut cProtons;

	Bool_t spectra;

	//auxiliary strings
	TString drawCommand;
	TString hsName;
	TString heName;
187
	TString hiName;
188 189

	TString canvasName;
190
	TString canvasTitle;
191

192 193 194 195 196
	Bool_t kSaveFigures;
	TString figurePath;
	TString figureFormat;

private:
197 198 199

	void InitHistos();

200
	void SaveFigures(TCanvas *canvas, TString variable, Int_t interval);
201
	void CanvasDivision(TCanvas *c);
202

203 204 205
	void SetCuts();
	void SetCMAngularCuts();

206 207 208
};

#endif /* BE_BEANALYSIS_H_ */