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

Diff of /PamCut/CollectionActions/RigFillAction/RigFillAction.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by pam-fi, Fri Jul 17 08:22:48 2009 UTC revision 1.5 by pam-fi, Tue Oct 27 10:18:21 2009 UTC
# Line 9  Line 9 
9    
10  #include "RigFillAction.h"  #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("R Vs Rc (thr.: %.2f)", _thresholdCoeff));
19      _rootHisto.GetXaxis()->SetTitle("Rc (GV)");
20      _rootHisto.GetYaxis()->SetTitle("R (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) :  RigFillAction::RigFillAction(const char *actionName, TString outFileBase, TString rigBinsFile, float thresholdCoeff) :
45    CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),    CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
46        _thresholdCoeff(thresholdCoeff) {        _zeroCutoffBins(0), _totalTextHisto(0), _thresholdCoeff(thresholdCoeff) {
47    
48    // Reading the bins from file    // Reading the bins from file
49    ifstream rigBinListFile;    ifstream rigBinListFile;
50    rigBinListFile.open(rigBinsFile);    rigBinListFile.open(rigBinsFile);
51    
52    TString auxString;    TString auxString;
53      vector<float> bins(0);
54    while (!rigBinListFile.eof()) {    while (!rigBinListFile.eof()) {
55      rigBinListFile >> auxString;      rigBinListFile >> auxString;
56      if (auxString != "") {      if (auxString != "") {
57        _bins.push_back(auxString.Atof());        bins.push_back(auxString.Atof());
58      }      }
59    }    }
60    rigBinListFile.close();    rigBinListFile.close();
61    
62    // Initializing histograms    _InitHistos(bins);
   _rootHisto.SetName("rfHisto");  
   _rootHisto.SetTitle(Form("Rc Vs R (thr.: %.2f)", _thresholdCoeff));  
   _rootHisto.GetXaxis()->SetTitle("R (GV)");  
   _rootHisto.GetYaxis()->SetTitle("Rc (GV)");  
   
   Double_t *auxArray = new Double_t[_bins.size()];  
   
   for (unsigned int i = 1; i < _bins.size(); i++) {  
     auxArray[i] = _bins[i];  
   }  
   
   _rootHisto.SetBins(_bins.size() - 1, auxArray, _bins.size() - 1, auxArray);  
   delete[] auxArray;  
63    
   _textHisto.Resize(_bins.size() - 1, _bins.size() - 1, 0);  
64  }  }
65    
66  void RigFillAction::OnGood(PamLevel2 *event) {  void RigFillAction::OnGood(PamLevel2 *event) {
# Line 49  void RigFillAction::OnGood(PamLevel2 *ev Line 68  void RigFillAction::OnGood(PamLevel2 *ev
68    float rigThreshold = _thresholdCoeff * event->GetOrbitalInfo()->GetCutoffSVL();    float rigThreshold = _thresholdCoeff * event->GetOrbitalInfo()->GetCutoffSVL();
69    float rig = event->GetTrack(0)->GetTrkTrack()->GetRigidity();    float rig = event->GetTrack(0)->GetTrkTrack()->GetRigidity();
70    
71    _rootHisto.Fill(rigThreshold, rig);    _rootHisto.Fill(rigThreshold, rig); // X,Y in the ROOT histogram
72    
73      // Event rigidity bin identification.
74    
75    //Bin identification: value must be less than (<) bin maximum    if (rig < _bins[0] || rig >= _bins[(int) _textHisto.GetNRows()]) {
76        return;
77      }
78    
79    int i = 1;    int i = 1;
80    while (rig >= _bins[i] && i < (int)_textHisto.GetNRows()) {    while (rig >= _bins[i]) {
81      i++;      i++;
82    }    }
83    i--;    i--;
84    
85    int j = 1;    // Threshold rigidity bin identification.
86    while (rigThreshold >= _bins[j] && j < (int)_textHisto.GetNCols()) {  
87      j++;    if (rigThreshold < 0 || rigThreshold >= _bins[(int) _textHisto.GetNRows()]) {
88        return;
89    }    }
   j--;  
90    
91    if (i < (int)_textHisto.GetNRows() && j < (int)_textHisto.GetNCols())    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]++;      _textHisto[i][j]++;
101        _totalTextHisto[i]++;
102    
103      }
104  }  }
105    
106  void RigFillAction::Finalize() {  void RigFillAction::Finalize() {
107    
108    // Write the text file    // Write the text file
109    ofstream outTextFile((_outFileBase + ".txt").Data(), ios_base::out);    if (_outFileBase != "") {
110    for (unsigned int i = 0; i < _textHisto.GetNRows(); i++) {  
111      for (unsigned int j = 0; j < _textHisto.GetNCols(); j++) {      ofstream outTextFile((_outFileBase + "-" + GetName() + ".txt").Data(), ios_base::out);
112        outTextFile << setw(7) << _textHisto[i][j] << "  ";      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 << "\n";      outTextFile.close();
   }  
   outTextFile.close();  
119    
120    // Write the ROOT file      // Write the report file, where zero bins are recorded
121    TFile outRootFile((_outFileBase + ".root"), "RECREATE");      outTextFile.open((_outFileBase + "-" + GetName() + "-InfBins.txt").Data(), ios_base::out);
122    outRootFile.cd();      for (unsigned int i = 0; i < _zeroCutoffBins.size(); i++)
123    _rootHisto.Write();        outTextFile << GetHistoThreshInfBin()[i] << "\n";
124    outRootFile.Close();      outTextFile.close();
125    
126        // Write the ROOT file
127        TFile outRootFile((_outFileBase + "-" + GetName() + ".root"), "RECREATE");
128        outRootFile.cd();
129        _rootHisto.Write();
130        outRootFile.Close();
131    
132      }
133  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.23