/[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.2 - (show annotations) (download)
Wed Aug 5 17:05:01 2009 UTC (16 years, 4 months ago) by pam-fi
Branch: MAIN
Changes since 1.1: +67 -35 lines
Constructor added;  now save on file is optional.

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 }
34
35 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, vector<float> &bins, float thresholdCoeff) :
36 CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
37 _zeroCutoffBins(0), _thresholdCoeff(thresholdCoeff) {
38
39 _InitHistos(bins);
40
41 }
42
43 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, TString rigBinsFile, float thresholdCoeff) :
44 CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
45 _zeroCutoffBins(0), _thresholdCoeff(thresholdCoeff) {
46
47 // Reading the bins from file
48 ifstream rigBinListFile;
49 rigBinListFile.open(rigBinsFile);
50
51 TString auxString;
52 vector<float> bins(0);
53 while (!rigBinListFile.eof()) {
54 rigBinListFile >> auxString;
55 if (auxString != "") {
56 bins.push_back(auxString.Atof());
57 }
58 }
59 rigBinListFile.close();
60
61 _InitHistos(bins);
62
63 }
64
65 void RigFillAction::OnGood(PamLevel2 *event) {
66
67 float rigThreshold = _thresholdCoeff * event->GetOrbitalInfo()->GetCutoffSVL();
68 float rig = event->GetTrack(0)->GetTrkTrack()->GetRigidity();
69
70 _rootHisto.Fill(rigThreshold, rig);
71
72 //Bin identification: value must be less than (<) bin maximum
73
74 int i = 1;
75 while (rig >= _bins[i] && i < (int) _textHisto.GetNRows()) {
76 i++;
77 }
78 i--;
79
80 //Check the zero bins
81 if (rigThreshold < _bins[0])
82 _zeroCutoffBins[i]++;
83 else {
84 int j = 1;
85 while (rigThreshold >= _bins[j] && j < (int) _textHisto.GetNCols()) {
86 j++;
87 }
88 j--;
89
90 if (i < (int) _textHisto.GetNRows() && j < (int) _textHisto.GetNCols())
91 _textHisto[i][j]++;
92 }
93 }
94
95 void RigFillAction::Finalize() {
96
97 // Write the text file
98 if (_outFileBase != "") {
99
100 ofstream outTextFile((_outFileBase + ".txt").Data(), ios_base::out);
101 for (unsigned int i = 0; i < _textHisto.GetNRows(); i++) {
102 for (unsigned int j = 0; j < _textHisto.GetNCols(); j++) {
103 outTextFile << setw(7) << _textHisto[i][j] << " ";
104 }
105 outTextFile << "\n";
106 }
107 outTextFile.close();
108
109 // Write the report file, where zero bins are recorded
110 outTextFile.open((_outFileBase + "-report.txt").Data(), ios_base::out);
111 outTextFile << "Zero bins for cutoff rigidity: \n";
112 for (unsigned int i = 0; i < _zeroCutoffBins.size(); i++)
113 cout << GetCutoffZeroBins()[i] << "\n";
114
115 // Write the ROOT file
116 TFile outRootFile((_outFileBase + ".root"), "RECREATE");
117 outRootFile.cd();
118 _rootHisto.Write();
119 outRootFile.Close();
120
121 }
122 }

  ViewVC Help
Powered by ViewVC 1.1.23