BeAnalysis.h 4.7 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 51

	void SetCMAngularRange(Int_t minAngle, Int_t maxAngle);
52

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

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

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

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

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

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

81 82
	void SaveSpectrumHist(Int_t chain);

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

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

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

90

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

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

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

110 111 112
	Int_t kMinAngle;
	Int_t kMaxAngle;

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

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

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

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

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

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

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

145 146
	Bool_t *thetaAT;	//!

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

	Long64_t eMaxEvents;
	Long64_t eEvents[6];

	Long64_t sMaxEvents;
	Long64_t sEvents[6];

	TCut sRatio[6];

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

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

	TCut cQ;
	TCut cProtons;

	Bool_t spectra;

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

	TString canvasName;
198
	TString canvasTitle;
199

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

private:
205 206 207

	void InitHistos();

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

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

214 215 216
};

#endif /* BE_BEANALYSIS_H_ */