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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download)
Tue Dec 20 17:41:49 2011 UTC (13 years ago) by pam-fi
Branch: MAIN
Changes since 1.3: +21 -2 lines
Patch to exlude PMT S115b in dE/dx computation.

1 /*
2 * TofDedxVsBetaHistoAction.cpp
3 *
4 * Created on: 25-giu-2009
5 * Author: Nicola Mori
6 */
7
8 /*! @file TofDedxVsBetaHistoAction.cpp The TofDedxVsBetaHistoAction class implementation file. */
9
10 #include "TofDedxVsBetaHistoAction.h"
11
12 TofDedxVsBetaHistoAction::TofDedxVsBetaHistoAction(const char *actionName, unsigned int layers, bool standAlone,
13 TString outFileBase, TString mode, bool outRoot, bool outText, TString title) :
14 Histo2DAction<Int_t>(actionName, title, outFileBase, mode, outRoot, outText), _layers(layers), _nLayers(0), _badEvents(
15 0), _standAlone(standAlone) {
16
17 bool buildTitle = false;
18 if (title == "") {
19 buildTitle = true;
20 title = "TOF dE/dx (";
21 }
22 if ((_layers & S11) == S11) {
23 if (buildTitle)
24 title += "S11";
25 _nLayers++;
26 }
27 if ((_layers & S12) == S12) {
28 if (buildTitle) {
29 if (_nLayers > 0)
30 title += ",";
31 title += "S12";
32 }
33 _nLayers++;
34 }
35 if ((_layers & S21) == S21) {
36 if (buildTitle) {
37 if (_nLayers > 0)
38 title += ",";
39 title += "S21";
40 }
41 _nLayers++;
42 }
43 if ((_layers & S22) == S22) {
44 if (buildTitle) {
45 if (_nLayers > 0)
46 title += ",";
47 title += "S22";
48 }
49 _nLayers++;
50 }
51 if ((_layers & S31) == S31) {
52 if (buildTitle) {
53 if (_nLayers > 0)
54 title += ",";
55 title += "S31";
56 }
57 _nLayers++;
58 }
59 if ((_layers & S32) == S32) {
60 if (buildTitle) {
61 if (_nLayers > 0)
62 title += ",";
63 title += "S32";
64 }
65 _nLayers++;
66 }
67 if (buildTitle)
68 title += ") Vs Beta";
69
70 SetTitle(title);
71
72 }
73
74 void TofDedxVsBetaHistoAction::OnGood(PamLevel2 *event) {
75
76 static float dEdx;
77 static float dEdxLayer;
78 static unsigned int badLayers;
79
80 static int trkSeqNo;
81 if (_standAlone)
82 trkSeqNo = 0;
83 else
84 for (int i = 0; i < event->GetToFLevel2()->ntrk(); i++) {
85 if (event->GetToFLevel2()->GetToFTrkVar(i)->trkseqno == event->GetTrack(0)->GetTrkTrack()->GetSeqNo())
86 trkSeqNo = i;
87 }
88
89 dEdx = 0.;
90 badLayers = 0;
91 if ((_layers & S11) == S11) {
92 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 0, 100);
93 // Patch to exclude S115b
94 ToFTrkVar *tofTrk = event->GetToFLevel2()->GetToFTrkVar(trkSeqNo);
95 bool has8 = false, has9 = false;
96 float dedx9 = 0.;
97 for (Int_t ib = 0; ib < tofTrk->npmtadc; ib++) {
98 if (tofTrk->pmtadc[ib] == 8) {
99 has8 = true;
100 }
101 if (tofTrk->pmtadc[ib] == 9) {
102 has9 = true;
103 dedx9 = tofTrk->dedx[ib];
104 }
105 }
106
107 if (has9) {
108 dEdxLayer -= (dedx9 / ((int) has8 + 1));
109 dEdxLayer *= 2.;
110 }
111 //End of patch
112 if (dEdxLayer > 0. && dEdxLayer < 4090)
113 dEdx += dEdxLayer;
114 else
115 badLayers++;
116 }
117 if ((_layers & S12) == S12) {
118 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 1, 100);
119 if (dEdxLayer > 0. && dEdxLayer < 4090)
120 dEdx += dEdxLayer;
121 else
122 badLayers++;
123 }
124 if ((_layers & S21) == S21) {
125 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 2, 100);
126 if (dEdxLayer > 0. && dEdxLayer < 4090)
127 dEdx += dEdxLayer;
128 else
129 badLayers++;
130 }
131 if ((_layers & S22) == S22) {
132 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 3, 100);
133 if (dEdxLayer > 0. && dEdxLayer < 4090)
134 dEdx += dEdxLayer;
135 else
136 badLayers++;
137 }
138 if ((_layers & S31) == S31) {
139 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 4, 100);
140 if (dEdxLayer > 0. && dEdxLayer < 4090)
141 dEdx += dEdxLayer;
142 else
143 badLayers++;
144 }
145 if ((_layers & S32) == S32) {
146 dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 5, 100);
147 if (dEdxLayer > 0. && dEdxLayer < 4090)
148 dEdx += dEdxLayer;
149 else
150 badLayers++;
151 }
152 if (badLayers == 0) {
153 dEdx /= _nLayers;
154 Fill(event->GetToFLevel2()->GetToFTrkVar(trkSeqNo)->beta[12], dEdx);
155 }
156 else
157 _badEvents++;
158 }
159

  ViewVC Help
Powered by ViewVC 1.1.23