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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Thu Mar 11 19:11:27 2010 UTC (14 years, 9 months ago) by pam-fi
Branch: MAIN
CVS Tags: Root_V8, BeforeMergingFromV8_1
Branch point for: V8
Added to repository. Replacing old version.

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 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, vector<float> &bins, float thresholdCoeff,
13 float chargeSign, bool spilloverFlag, float spilloverLimit) :
14 Histo2DAction<Int_t> (actionName, "", outFileBase, "RECREATE", false, true), _thresholdCoeff(thresholdCoeff),
15 _chargeSign(chargeSign), _spilloverFlag(spilloverFlag), _spilloverLimit(spilloverLimit) {
16
17 SetXAxis("Rc [GV]", bins);
18 SetYAxis("R [GV]", bins);
19
20 }
21
22 RigFillAction::RigFillAction(const char *actionName, TString outFileBase, TString rigBinsFile, float thresholdCoeff,
23 float chargeSign, bool spilloverFlag, float spilloverLimit) :
24 Histo2DAction<Int_t> (actionName, "", outFileBase, "RECREATE", false, true), _thresholdCoeff(thresholdCoeff),
25 _chargeSign(chargeSign), _spilloverFlag(spilloverFlag), _spilloverLimit(spilloverLimit) {
26
27 SetXAxis("Rc [GV]", rigBinsFile);
28 SetYAxis("R [GV]", rigBinsFile);
29
30 }
31
32 void RigFillAction::OnGood(PamLevel2 *event) {
33
34 float rigThreshold = _thresholdCoeff * event->GetOrbitalInfo()->GetCutoffSVL();
35 float rig = 1. / event->GetTrack(0)->GetTrkTrack()->GetDeflection();
36
37 if (rig / _chargeSign > 0) { // Check if the particle has the right sign
38 Fill(rigThreshold, rig);
39 }
40 else if (_spilloverFlag && fabs(rig) > _spilloverLimit) { // Check if it is a spillover event
41 Fill(rigThreshold, _yBins.back() + 1.); // Place it in the Y overflow
42 }
43
44 }
45
46 void RigFillAction::Finalize() {
47
48 // Save the histogram
49 Histo2DAction<Int_t>::Finalize();
50
51 // Save the zero bins
52 if (_outFileBase != "") {
53 ofstream outTextFile((_outFileBase + "-InfBins.txt").Data(), ios_base::out);
54 // XUnderflow is the vector of events whose Rc is below the lower histogram limit
55 for (unsigned int i = 0; i < GetXUnderflow().size(); i++)
56 outTextFile << GetXUnderflow()[i] << "\n";
57 outTextFile.close();
58
59 // Save the (spillover + rigidity overflow)
60 if (_spilloverFlag) {
61 ofstream outTextFile((_outFileBase + "-Spillover.txt").Data(), ios_base::out);
62 // XUnderYOverflow is the number of (spillover + rigidity overflow) events with an underflowing critical rigidity
63 outTextFile << GetXUnderYOverflow() << "\n";
64 for (unsigned int i = 0; i < GetXUnderflow().size(); i++)
65 // YOverflow are the (spillover + rigidity overflow) bins
66 outTextFile << GetYOverflow()[i] << "\n";
67 outTextFile.close();
68 }
69 }
70 }

  ViewVC Help
Powered by ViewVC 1.1.23