BeAnalysis.h 5.05 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 20 21 22 23 24 25 26

using std::cout;
using std::endl;

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

27 28 29 30 31 32 33 34
	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);
35 36 37 38 39 40

	void OpenSimChains();
	void OpenExpChain();

	TChain* GetExpChain() {return che;};
	TChain* GetSimChain(Int_t i) {return chs[i];};
41 42 43 44 45
	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);

	void SetCuts();

	void SetCMAngularRange(Int_t minAngle, Int_t maxAngle);
46
private:
47
	void SetCMAngularCuts();
48
public:
49 50
	void SetRangeProportion(Float_t rangeProportion = 1.1, Bool_t autoRange = 1);

51 52
	void SetNoExpEvents(Long64_t *noExpEvents = 0);
	void SetNoSimEvents(Long64_t *noSimEvents = 0);
53 54 55 56 57 58 59 60
	void SetRatiosGStoEX(TString sRatioAl0, TString sRatioNoAl0,
			TString sRatioAl180, TString sRatioNoAl180,
			TString sRatioAl90, TString sRatioNoAl90);
//	void ExpEventsECuts(Long64_t **noExpEvents = 0);
//	void ExpEventsECuts(Int_t (&noExpEvents)[5][6]);
//	void ExpEventsECuts(Int_t (*noExpEvents)[5][6]);
	void ExpEventsECuts(Long64_t noExpEvents[5][6] = 0);
	void SimEventsECuts(Long64_t noSimEvents[5][6] = 0);
61
	void EpsilonTRange();
62

63 64 65 66 67 68
	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);

69
	void Spectra();
70
	void EpsilonT();
71 72 73 74 75
	void CosThetaTk();
	void EpsilonY();
	void CosThetaYk();
	void ThetaAT();

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


79
//
80
//private:
81 82 83
	TChain *che;		//chain with experimental trees
	TChain *chs[6];		//array of chains with simulation trees
	TTree *ti[6];		//array of chains with simulation input
84
private:
85

86 87 88 89 90 91 92 93
	Int_t lowExpFile;
	Int_t upExpFile;
	TString expFiles;
	TString simFiles[6];
	TString inputFiles[6];
	Int_t lowSimFile[6];
	Int_t upSimFile[6];

94 95 96 97 98 99 100
	Int_t kMinAngle;
	Int_t kMaxAngle;

	TCut cAngles;
	TCut crAngles;

	Bool_t kChains[6];
101 102
	Int_t noIntervals;
	Bool_t *epsilonT;	//!
103 104
	Bool_t *cosThetaT;	//!
	Bool_t *epsilonY;	//!
105
	Bool_t *cosThetaY;	//!
106

107 108
	Bool_t *thetaAT;	//!

109 110
	Bool_t kAutoRange;
	Float_t kRangeProportion;
111 112
	Bool_t kVerbose;
	Float_t kRangeProportionIn;
113 114

	Long64_t eMaxEvents;
115 116 117 118 119 120
//	Long64_t eEventsAl0;
//	Long64_t eEventsNoAl0;
//	Long64_t eEventsAl180;
//	Long64_t eEventsNoAl180;
//	Long64_t eEventsAl90;
//	Long64_t eEventsNoAl90;
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
	Long64_t eEvents[6];

	Long64_t sMaxEvents;
	Long64_t sEventsAl0;
	Long64_t sEventsNoAl0;
	Long64_t sEventsAl180;
	Long64_t sEventsNoAl180;
	Long64_t sEventsAl90;
	Long64_t sEventsNoAl90;
	Long64_t sEvents[6];

	TCut sRatioAl0;
	TCut sRatioNoAl0;
	TCut sRatioAl180;
	TCut sRatioNoAl180;
	TCut sRatioAl90;
	TCut sRatioNoAl90;
	TCut sRatio[6];

140 141 142
	Long64_t eEventsECuts[5][6];		//!
	Long64_t sEventsECuts[5][6];		//!
	Double_t eTRange[5][6];				//!
143

144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
	//cuts
	TCut cBe20;
	TCut cBe3;
	TCut cBeWork;
	TCut cBe0_14;
	//	TCut cBe0_14 = "fBeIM>0 && fBeIM<1.6";
	//	TCut cBe0_14 = "fBeIM>0 && fBeIM<1.20";
	TCut cBe14_19;
	TCut cBe19_25;
	TCut cBe25_31;
	TCut cBe31_37;
	TCut cBeE[5];

	TCut cEpsilonT;
	//	TCut cEpsilonT = "fTpp/fBeIM<1.";
	//	TCut cEpsilonY = "fTap/fBeIM<0.5";
	TCut cEpsilonY;

	//raw files
	//energy cuts
	TCut crBe20;
	TCut crBe3;
	TCut crBeWork;
	TCut crBe0_14;
	//	TCut crBe0_14 = "f6BeIM>0 && f6BeIM<1.6";
	//	TCut crBe0_14 = "f6BeIM>0.5 && f6BeIM<1.20";
	TCut crBe14_19;
	TCut crBe19_25;
	TCut crBe25_31;
	TCut crBe31_37;
	TCut crBeE[5];
	//angular cuts


	//	TCut crEpsilonT = "fTpp/f6BeIM>0.8";
	TCut crEpsilonT;
	//	TCut crEpsilonT = "fTpp/f6BeIM<1.";
	//	TCut crEpsilonY = "fTap/f6BeIM<0.5";
	TCut crEpsilonY;

	//simulation input
	TCut ciBe0_14;
	//	TCut ciBe0_14 = "E_IM>0 && E_IM<1.6";
	//	TCut ciBe0_14 = "E_IM>0.5 && E_IM<1.20";
	TCut ciBe14_19;
	TCut ciBe19_25;
	TCut ciBe25_31;
	TCut ciBe31_37;
	TCut ciBeE[5];

	TCut ciEpsilon;
	//	TCut ciEpsilon = "sTpp/E_IM<1.";
	//	TCut ciEpsilonY = "sTap/E_IM<0.5";
	TCut ciEpsilonY;

	TCut cQ;
	TCut cProtons;
	//	TCut cProtons = "fP1Lab.fE-938.272<34 && fP2Lab.fE-938.272<34 && fP1Lab.fE-938.272>1 && fP2Lab.fE-938.272>1";

	Bool_t spectra;

	//auxiliary strings
	TString drawCommand;
	TString hsName;
	TString heName;
209
	TString hiName;
210 211

	TString canvasName;
212
	TString canvasTitle;
213

214 215 216 217 218 219 220
	Bool_t kSaveFigures;
	TString figurePath;
	TString figureFormat;

private:
	void SaveFigures(TCanvas *canvas, TString variable, Int_t interval);

221 222 223
};

#endif /* BE_BEANALYSIS_H_ */