/[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.2 by pam-fi, Wed Aug 5 17:05:01 2009 UTC revision 1.6 by pam-fi, Mon Mar 8 09:17:58 2010 UTC
# Line 15  void RigFillAction::_InitHistos(vector<f Line 15  void RigFillAction::_InitHistos(vector<f
15    
16    // Initializing histograms    // Initializing histograms
17    _rootHisto.SetName("rfHisto");    _rootHisto.SetName("rfHisto");
18    _rootHisto.SetTitle(Form("Rc Vs R (thr.: %.2f)", _thresholdCoeff));    _rootHisto.SetTitle(Form("R Vs Rc (thr.: %.2f)", _thresholdCoeff));
19    _rootHisto.GetXaxis()->SetTitle("R (GV)");    _rootHisto.GetXaxis()->SetTitle("Rc (GV)");
20    _rootHisto.GetYaxis()->SetTitle("Rc (GV)");    _rootHisto.GetYaxis()->SetTitle("R (GV)");
21    
22    Double_t *auxArray = new Double_t[_bins.size()];    Double_t *auxArray = new Double_t[_bins.size()];
23    
# Line 30  void RigFillAction::_InitHistos(vector<f Line 30  void RigFillAction::_InitHistos(vector<f
30    
31    _zeroCutoffBins.resize(_bins.size() - 1, 0);    _zeroCutoffBins.resize(_bins.size() - 1, 0);
32    _textHisto.Resize(_bins.size() - 1, _bins.size() - 1, 0);    _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) :  RigFillAction::RigFillAction(const char *actionName, TString outFileBase, vector<float> &bins, float thresholdCoeff) :
37    CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),    CollectionAction(actionName), _outFileBase(outFileBase), _bins(0), _rootHisto(), _textHisto(0, 0, 0),
38        _zeroCutoffBins(0), _thresholdCoeff(thresholdCoeff) {        _zeroCutoffBins(0), _totalTextHisto(0), _thresholdCoeff(thresholdCoeff) {
39    
40    _InitHistos(bins);    _InitHistos(bins);
41    
# Line 42  RigFillAction::RigFillAction(const char Line 43  RigFillAction::RigFillAction(const char
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        _zeroCutoffBins(0), _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;
# Line 67  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    //Bin identification: value must be less than (<) bin maximum    // Event rigidity bin identification.
74    
75      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    //Check the zero bins    // Threshold rigidity bin identification.
86    if (rigThreshold < _bins[0])  
87      if (rigThreshold <= 0 || rigThreshold >= _bins[(int) _textHisto.GetNRows()]) {
88        return;
89      }
90    
91      if (0 < rigThreshold && rigThreshold < _bins[0])
92      _zeroCutoffBins[i]++;      _zeroCutoffBins[i]++;
93    else {    else {
94      int j = 1;      int j = 1;
95      while (rigThreshold >= _bins[j] && j < (int) _textHisto.GetNCols()) {      while (rigThreshold >= _bins[j]) {
96        j++;        j++;
97      }      }
98      j--;      j--;
99    
100      if (i < (int) _textHisto.GetNRows() && j < (int) _textHisto.GetNCols())      _textHisto[i][j]++;
101        _textHisto[i][j]++;      _totalTextHisto[i]++;
102    
103    }    }
104  }  }
105    
# Line 97  void RigFillAction::Finalize() { Line 108  void RigFillAction::Finalize() {
108    // Write the text file    // Write the text file
109    if (_outFileBase != "") {    if (_outFileBase != "") {
110    
111      ofstream outTextFile((_outFileBase + ".txt").Data(), ios_base::out);      ofstream outTextFile((_outFileBase + "-" + GetName() + ".txt").Data(), ios_base::out);
112      for (unsigned int i = 0; i < _textHisto.GetNRows(); i++) {      for (unsigned int i = 0; i < _textHisto.GetNRows(); i++) {
113        for (unsigned int j = 0; j < _textHisto.GetNCols(); j++) {        for (unsigned int j = 0; j < _textHisto.GetNCols(); j++) {
114          outTextFile << setw(7) << _textHisto[i][j] << "  ";          outTextFile << setw(7) << _textHisto[i][j] << "  ";
# Line 107  void RigFillAction::Finalize() { Line 118  void RigFillAction::Finalize() {
118      outTextFile.close();      outTextFile.close();
119    
120      // Write the report file, where zero bins are recorded      // Write the report file, where zero bins are recorded
121      outTextFile.open((_outFileBase + "-report.txt").Data(), ios_base::out);      outTextFile.open((_outFileBase + "-" + GetName() + "-InfBins.txt").Data(), ios_base::out);
     outTextFile << "Zero bins for cutoff rigidity: \n";  
122      for (unsigned int i = 0; i < _zeroCutoffBins.size(); i++)      for (unsigned int i = 0; i < _zeroCutoffBins.size(); i++)
123        cout << GetCutoffZeroBins()[i] << "\n";        outTextFile << GetHistoThreshInfBin()[i] << "\n";
124        outTextFile.close();
125    
126      // Write the ROOT file      // Write the ROOT file
127      TFile outRootFile((_outFileBase + ".root"), "RECREATE");      /*TFile outRootFile((_outFileBase + "-" + GetName() + ".root"), "RECREATE");
128      outRootFile.cd();       outRootFile.cd();
129      _rootHisto.Write();       _rootHisto.Write();
130      outRootFile.Close();       outRootFile.Close();
131         */
132    }    }
133  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.23