BeAnalysis.h 4.83 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
	void SetNoBinsThetaA(Int_t noBins = 30) {noBinsThetaA = noBins;};
44

45 46
	TChain* GetExpChain() {return che;};
	TChain* GetSimChain(Int_t i) {return chs[i];};
47 48
	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);

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

	void SetCMAngularRange(Int_t minAngle, Int_t maxAngle);
53

54 55
	void SetRangeProportion(Float_t rangeProportion = 1.1, Bool_t autoRange = 1);

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

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

66
	void SetSpectra(Bool_t kSpectra = 1) {spectra = kSpectra;};
67 68 69 70 71 72
	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);

73
	void Spectra();
74
	void EpsilonT();
75 76 77 78 79
	void CosThetaTk();
	void EpsilonY();
	void CosThetaYk();
	void ThetaAT();

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

82 83
	void SaveSpectrumHist(Int_t chain);

84
	void SaveEpsilonTHist(Int_t interval, Int_t chain, TString outfilename = "figures/epsilonT.root");
85
	void SaveCosThetaTHist(Int_t interval, Int_t chain);
86

87 88
	void SaveEpsilonYHist(Int_t interval, Int_t chain);

89 90
	void SaveThetaAHist(Int_t interval, Int_t chain);

91

92
//
93
private:
94 95 96
	TChain *che;		//chain with experimental trees
	TChain *chs[6];		//array of chains with simulation trees
	TTree *ti[6];		//array of chains with simulation input
97
private:
98

99 100 101 102 103 104 105 106
	Int_t lowExpFile;
	Int_t upExpFile;
	TString expFiles;
	TString simFiles[6];
	TString inputFiles[6];
	Int_t lowSimFile[6];
	Int_t upSimFile[6];

107
	Int_t noBinsSpectra;
108
	Int_t noBinsCorr;
109
	Int_t noBinsThetaA;
110

111 112 113
	Int_t kMinAngle;
	Int_t kMaxAngle;

114 115 116 117 118 119 120 121 122
//histograms
	TH1F *hsSpectra[6];
	TH1F *heSpectra[6];
	TH1F *hSdiff[6];

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

123 124 125 126 127 128 129
	TH1F *hscoskT[5][6];
	TH1F *hecoskT[5][6];
	TH1F *hicoskT[5][6];

	TH1F *hseY[5][6];
	TH1F *heeY[5][6];
	TH1F *hieY[5][6];
130

131 132 133 134
	TH1F *hsthetaAT[5][6];
	TH1F *hethetaAT[5][6];
	TH1F *hithetaAT[5][6];

135
//cuts
136 137 138 139
	TCut cAngles;
	TCut crAngles;

	Bool_t kChains[6];
140 141
	Int_t noIntervals;
	Bool_t *epsilonT;	//!
142 143
	Bool_t *cosThetaT;	//!
	Bool_t *epsilonY;	//!
144
	Bool_t *cosThetaY;	//!
145

146 147
	Bool_t *thetaAT;	//!

148 149
	Bool_t kAutoRange;
	Float_t kRangeProportion;
150 151
	Bool_t kVerbose;
	Float_t kRangeProportionIn;
152 153 154 155 156 157 158 159 160

	Long64_t eMaxEvents;
	Long64_t eEvents[6];

	Long64_t sMaxEvents;
	Long64_t sEvents[6];

	TCut sRatio[6];

161 162 163
	Long64_t eEventsECuts[5][6];		//!
	Long64_t sEventsECuts[5][6];		//!
	Double_t eTRange[5][6];				//!
164

165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
	//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;
185
//	TCut ciEpsilonY;
186 187 188 189 190 191 192 193 194 195

	TCut cQ;
	TCut cProtons;

	Bool_t spectra;

	//auxiliary strings
	TString drawCommand;
	TString hsName;
	TString heName;
196
	TString hiName;
197 198

	TString canvasName;
199
	TString canvasTitle;
200

201 202 203 204 205
	Bool_t kSaveFigures;
	TString figurePath;
	TString figureFormat;

private:
206 207 208

	void InitHistos();

209
	void SaveFigures(TCanvas *canvas, TString variable, Int_t interval);
210
	void CanvasDivision(TCanvas *c);
211

212 213 214
	void SetCuts();
	void SetCMAngularCuts();

215 216 217
};

#endif /* BE_BEANALYSIS_H_ */