/[PAMELA software]/PamCut/CollectionActions/RigFillAction/RigFillAction.cpp
ViewVC logotype

Contents of /PamCut/CollectionActions/RigFillAction/RigFillAction.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download)
Wed Aug 26 16:34:15 2009 UTC (16 years, 3 months ago) by pam-fi
Branch: MAIN
Changes since 1.3: +22 -11 lines
*** empty log message ***

1 /*
2 * RigFillAction.cpp
3 *
4 * Created on: 14/lug/2009
5 * Author: Nicola Mori
6 */
7
8 /*! @file RigFillAction.cpp The RigFillAction class implementation file. */
9
10 #include "RigFillAction.h"
11
12 void RigFillAction::_InitHistos(vector<float> &bins) {
13
14 _bins = bins;
15
16 // Initializing histograms
17 _rootHisto.SetName("rfHisto");
18 _rootHisto.SetTitle(Form("Rc Vs R (thr.: %.2f)", _thresholdCoeff));
19 _rootHisto.GetXaxis()->SetTitle("R (GV)");
20 _rootHisto.GetYaxis()->SetTitle("Rc (GV)");
21
22 Double_t *auxArray = new Double_t[_bins.size()];
23
24 for (unsigned int i = 1; i < _bins.size(); i++) {
25 auxArray[i] = _bins[i];
26 }
27
28 _rootHisto.SetBins(_bins.size() - 1, auxArray, _bins.size() - 1, auxArray);
29 delete[] auxArray;
30
31 _zeroCutoffBins.resize(_bins.size() - 1, 0);
32 _textHisto.Resize(_bins.size() - 1, _bins.size() - 1, 0);
33 _totalTextHisto.resize(_bins.size() - 1, 0);
34 }
35
36 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, vector<float> &bins, float thresholdCoeff) :
37 CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
38 _zeroCutoffBins(0), _totalTextHisto(0), _thresholdCoeff(thresholdCoeff) {
39
40 _InitHistos(bins);
41
42 }
43
44 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, TString rigBinsFile, float thresholdCoeff) :
45 CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
46 _zeroCutoffBins(0), _totalTextHisto(0), _thresholdCoeff(thresholdCoeff) {
47
48 // Reading the bins from file
49 ifstream rigBinListFile;
50 rigBinListFile.open(rigBinsFile);
51
52 TString auxString;
53 vector<float> bins(0);
54 while (!rigBinListFile.eof()) {
55 rigBinListFile >> auxString;
56 if (auxString != "") {
57 bins.push_back(auxString.Atof());
58 }
59 }
60 rigBinListFile.close();
61
62 _InitHistos(bins);
63
64 }
65
66 void RigFillAction::OnGood(PamLevel2 *event) {
67
68 float rigThreshold = _thresholdCoeff * event->GetOrbitalInfo()->GetCutoffSVL();
69 float rig = event->GetTrack(0)->GetTrkTrack()->GetRigidity();
70
71 _rootHisto.Fill(rigThreshold, rig); // X,Y in the ROOT histogram
72
73 // Event rigidity bin identification.
74
75 // cout << rig << endl;
76 if (rig < _bins[0] || rig >= _bins[(int) _textHisto.GetNRows()]) {
77 // cout << "found!" << endl;
78 return;
79 }
80
81 int i = 1;
82 while (rig >= _bins[i]) {
83 i++;
84 }
85 i--;
86
87 // Threshold rigidity bin identification.
88
89 if (rigThreshold < 0 || rigThreshold >= _bins[(int) _textHisto.GetNRows()]) return;
90
91 if (0 <= rigThreshold && rigThreshold < _bins[0])
92 _zeroCutoffBins[i]++;
93 else {
94 int j = 1;
95 while (rigThreshold >= _bins[j]) {
96 j++;
97 }
98 j--;
99
100 _textHisto[i][j]++;
101 _totalTextHisto[i]++;
102
103 }
104 }
105
106 void RigFillAction::Finalize() {
107
108 // Write the text file
109 if (_outFileBase != "") {
110
111 ofstream outTextFile((_outFileBase + ".txt").Data(), ios_base::out);
112 for (unsigned int i = 0; i < _textHisto.GetNRows(); i++) {
113 for (unsigned int j = 0; j < _textHisto.GetNCols(); j++) {
114 outTextFile << setw(7) << _textHisto[i][j] << " ";
115 }
116 outTextFile << "\n";
117 }
118 outTextFile.close();
119
120 // Write the report file, where zero bins are recorded
121 outTextFile.open((_outFileBase + "-report.txt").Data(), ios_base::out);
122 outTextFile << "Zero bins for cutoff rigidity: \n";
123 for (unsigned int i = 0; i < _zeroCutoffBins.size(); i++)
124 outTextFile << GetHistoThreshInfBin()[i] << "\n";
125 outTextFile.close();
126
127 // Write the ROOT file
128 TFile outRootFile((_outFileBase + ".root"), "RECREATE");
129 outRootFile.cd();
130 _rootHisto.Write();
131 outRootFile.Close();
132
133 }
134 }

  ViewVC Help
Powered by ViewVC 1.1.23