/[PAMELA software]/DarthVader/TriggerLevel2/src/TrigLevel2.cpp
ViewVC logotype

Contents of /DarthVader/TriggerLevel2/src/TrigLevel2.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (show annotations) (download)
Thu Apr 12 12:27:16 2012 UTC (12 years, 7 months ago) by mocchiut
Branch: MAIN
CVS Tags: v10RED, v10REDr01, HEAD
Changes since 1.6: +171 -0 lines
New TrigLevel2, ToFLevel2, OrbitalInfo classes, new order in DV processing (trigger first), ToF bugs fixed, new tof calibration, new variables in ToF and OrbitalInfo

1 #include <TObject.h>
2 #include <TrigLevel2.h>
3 ClassImp(TrigLevel2);
4
5 TrigLevel2::TrigLevel2() {
6 this->Clear();
7 }
8
9 void TrigLevel2::Clear(Option_t *t){
10 evcount = 0;
11 memset(pmtpl, 0, 3*sizeof(Int_t));
12 memset(patternbusy, 0, 3*sizeof(Int_t));
13 memset(trigrate, 0, 6*sizeof(Int_t));
14 memset(patterntrig, 0, 6*sizeof(Int_t));
15 memset(dltime, 0, 2*sizeof(Int_t));
16 memset(s4calcount, 0, 2*sizeof(Int_t));
17 memset(pmtcount1, 0, 24*sizeof(Int_t));
18 memset(pmtcount2, 0, 24*sizeof(Int_t));
19 trigconf = 0;
20 unpackError = 0;
21 }
22
23 /**
24 * Fills a struct cTrigLevel2 with values from a TrigLevel2 object (to put data into a F77 common).
25 */
26 void TrigLevel2::GetLevel2Struct(cTrigLevel2 *l2) const{
27
28 l2->evcount = evcount;
29 l2->trigconf = trigconf;
30
31 for(int i=0;i<2;i++){
32 l2->s4calcount[i] = s4calcount[i];
33 l2->dltime[i] = dltime[i];
34 }
35
36 for(int i=0;i<3;i++){
37 l2->pmtpl[i] = pmtpl[i];
38 l2->patternbusy[i] = patternbusy[i];
39 }
40
41 for(int i=0;i<6;i++){
42 l2->trigrate[i] = trigrate[i];
43 l2->patterntrig[i] = patterntrig[i];
44 }
45
46 for(int i=0;i<24;i++){
47 l2->pmtcount1[i] = pmtcount1[i];
48 l2->pmtcount2[i] = pmtcount2[i];
49 }
50 }
51
52 void TrigLevel2::SetFromLevel2Struct(cTrigLevel2 *l2){
53
54 evcount = l2->evcount;
55 trigconf = l2->trigconf;
56
57 for(int i=0;i<2;i++){
58 s4calcount[i] = l2->s4calcount[i];
59 dltime[i] = l2->dltime[i];
60 }
61
62 for(int i=0;i<3;i++){
63 pmtpl[i] = l2->pmtpl[i];
64 patternbusy[i] = l2->patternbusy[i];
65 }
66
67 for(int i=0;i<6;i++){
68 trigrate[i] = l2->trigrate[i];
69 patterntrig[i] = l2->patterntrig[i];
70 }
71
72 for(int i=0;i<24;i++){
73 pmtcount1[i] = l2->pmtcount1[i];
74 pmtcount2[i] = l2->pmtcount2[i];
75 }
76 }
77
78 bool TrigLevel2::bit(int decimal, char pos){
79 return( (decimal>>pos)%2 );
80 }
81
82 void TrigLevel2::printpatterntrig(){
83 UInt_t *patterntrig = this->patterntrig;
84 //S3
85 if ( this->bit(patterntrig[2],0) ) printf(" S31_1A \n");
86 if ( this->bit(patterntrig[2],1) ) printf(" S31_2A \n");
87 if ( this->bit(patterntrig[2],2) ) printf(" S31_3A \n");
88 if ( this->bit(patterntrig[2],3) ) printf(" S31_1B\n");
89 if ( this->bit(patterntrig[2],4) ) printf(" S31_2B\n");
90 if ( this->bit(patterntrig[2],5) ) printf(" S31_3B\n");
91
92 if ( this->bit(patterntrig[2],6) ) printf(" S32_1A \n");
93 if ( this->bit(patterntrig[2],7) ) printf(" S32_2A \n");
94 if ( this->bit(patterntrig[2],8) ) printf(" S32_3A \n");
95 if ( this->bit(patterntrig[2],9) ) printf(" S32_1B\n");
96 if ( this->bit(patterntrig[2],10) ) printf(" S32_2B\n");
97 if ( this->bit(patterntrig[2],11) ) printf(" S32_3B\n");
98
99 //S2
100 if ( this->bit(patterntrig[3],0) ) printf(" S21_1A \n");
101 if ( this->bit(patterntrig[3],1) ) printf(" S21_2A \n");
102 if ( this->bit(patterntrig[3],2) ) printf(" S21_1B\n");
103 if ( this->bit(patterntrig[3],3) ) printf(" S21_2B\n");
104
105 if ( this->bit(patterntrig[3],4) ) printf(" S22_1A \n");
106 if ( this->bit(patterntrig[3],5) ) printf(" S22_2A \n");
107 if ( this->bit(patterntrig[3],6) ) printf(" S22_1B\n");
108 if ( this->bit(patterntrig[3],7) ) printf(" S22_2B\n");
109
110 //S12
111 if ( this->bit(patterntrig[4],0) ) printf(" S12_1A \n");
112 if ( this->bit(patterntrig[4],1) ) printf(" S12_2A \n");
113 if ( this->bit(patterntrig[4],2) ) printf(" S12_3A \n");
114 if ( this->bit(patterntrig[4],3) ) printf(" S12_4A \n");
115 if ( this->bit(patterntrig[4],4) ) printf(" S12_5A \n");
116 if ( this->bit(patterntrig[4],5) ) printf(" S12_6A \n");
117
118 if ( this->bit(patterntrig[4],6) ) printf(" S12_1A \n");
119 if ( this->bit(patterntrig[4],7) ) printf(" S12_2A \n");
120 if ( this->bit(patterntrig[4],8) ) printf(" S12_3A \n");
121 if ( this->bit(patterntrig[4],9) ) printf(" S12_4B\n");
122 if ( this->bit(patterntrig[4],10) ) printf(" S12_5B\n");
123 if ( this->bit(patterntrig[4],11) ) printf(" S12_6B\n");
124
125 //S11
126 if ( this->bit(patterntrig[5],0) ) printf(" S11_1A \n");
127 if ( this->bit(patterntrig[5],1) ) printf(" S11_2A \n");
128 if ( this->bit(patterntrig[5],2) ) printf(" S11_3A \n");
129 if ( this->bit(patterntrig[5],3) ) printf(" S11_4A \n");
130 if ( this->bit(patterntrig[5],4) ) printf(" S11_5A \n");
131 if ( this->bit(patterntrig[5],5) ) printf(" S11_6A \n");
132 if ( this->bit(patterntrig[5],6) ) printf(" S11_7A \n");
133 if ( this->bit(patterntrig[5],7) ) printf(" S11_8A \n");
134
135 if ( this->bit(patterntrig[5],8) ) printf(" S11_1B\n");
136 if ( this->bit(patterntrig[5],9) ) printf(" S11_2B\n");
137 if ( this->bit(patterntrig[5],10) ) printf(" S11_3B\n");
138 if ( this->bit(patterntrig[5],11) ) printf(" S11_4B\n");
139 if ( this->bit(patterntrig[5],12) ) printf(" S11_5B\n");
140 if ( this->bit(patterntrig[5],13) ) printf(" S11_6B\n");
141 if ( this->bit(patterntrig[5],14) ) printf(" S11_7B\n");
142 if ( this->bit(patterntrig[5],15) ) printf(" S11_8B\n");
143
144 }
145
146 bool TrigLevel2::checkPMTpatterntrig(){
147 UInt_t *patterntrig = this->patterntrig;
148 int S11 = 0;
149 int S12 = 0;
150 int S21 = 0;
151 int S22 = 0;
152 int S31 = 0;
153 int S32 = 0;
154
155 //S3
156 if ( this->bit(patterntrig[2],0) ) S31 = 1;
157 if ( this->bit(patterntrig[2],1) ) S31 = 1;
158 if ( this->bit(patterntrig[2],2) ) S31 = 1;
159 if ( this->bit(patterntrig[2],3) ) S31 = 1;
160 if ( this->bit(patterntrig[2],4) ) S31 = 1;
161 if ( this->bit(patterntrig[2],5) ) S31 = 1;
162 if ( this->bit(patterntrig[2],6) ) S32 = 1;
163 if ( this->bit(patterntrig[2],7) ) S32 = 1;
164 if ( this->bit(patterntrig[2],8) ) S32 = 1;
165 if ( this->bit(patterntrig[2],9) ) S32 = 1;
166 if ( this->bit(patterntrig[2],10) ) S32 = 1;
167 if ( this->bit(patterntrig[2],11) ) S32 = 1;
168 //S2
169 if ( this->bit(patterntrig[3],0) ) S21 = 1;
170 if ( this->bit(patterntrig[3],1) ) S21 = 1;
171 if ( this->bit(patterntrig[3],2) ) S21 = 1;
172 if ( this->bit(patterntrig[3],3) ) S21 = 1;
173 if ( this->bit(patterntrig[3],4) ) S22 = 1;
174 if ( this->bit(patterntrig[3],5) ) S22 = 1;
175 if ( this->bit(patterntrig[3],6) ) S22 = 1;
176 if ( this->bit(patterntrig[3],7) ) S22 = 1;
177 //S12
178 if ( this->bit(patterntrig[4],0) ) S12 = 1;
179 if ( this->bit(patterntrig[4],1) ) S12 = 1;
180 if ( this->bit(patterntrig[4],2) ) S12 = 1;
181 if ( this->bit(patterntrig[4],3) ) S12 = 1;
182 if ( this->bit(patterntrig[4],4) ) S12 = 1;
183 if ( this->bit(patterntrig[4],5) ) S12 = 1;
184 if ( this->bit(patterntrig[4],6) ) S12 = 1;
185 if ( this->bit(patterntrig[4],7) ) S12 = 1;
186 if ( this->bit(patterntrig[4],8) ) S12 = 1;
187 if ( this->bit(patterntrig[4],9) ) S12 = 1;
188 if ( this->bit(patterntrig[4],10) ) S12 = 1;
189 if ( this->bit(patterntrig[4],11) ) S12 = 1;
190 //S11
191 if ( this->bit(patterntrig[5],0) ) S11 = 1;
192 if ( this->bit(patterntrig[5],1) ) S11 = 1;
193 if ( this->bit(patterntrig[5],2) ) S11 = 1;
194 if ( this->bit(patterntrig[5],3) ) S11 = 1;
195 if ( this->bit(patterntrig[5],4) ) S11 = 1;
196 if ( this->bit(patterntrig[5],5) ) S11 = 1;
197 if ( this->bit(patterntrig[5],6) ) S11 = 1;
198 if ( this->bit(patterntrig[5],7) ) S11 = 1;
199 if ( this->bit(patterntrig[5],8) ) S11 = 1;
200 if ( this->bit(patterntrig[5],9) ) S11 = 1;
201 if ( this->bit(patterntrig[5],10) ) S11 = 1;
202 if ( this->bit(patterntrig[5],11) ) S11 = 1;
203 if ( this->bit(patterntrig[5],12) ) S11 = 1;
204 if ( this->bit(patterntrig[5],13) ) S11 = 1;
205 if ( this->bit(patterntrig[5],14) ) S11 = 1;
206 if ( this->bit(patterntrig[5],15) ) S11 = 1;
207
208 // trigger configuration for the event from patterntrig
209 int TOF1 = (S11 + S12) * (S21 + S22) * (S31 + S32);
210 int TOF2 = (S11 * S12) * (S21 * S22) * (S31 * S32);
211
212 int TOF3 = (S21 + S22) * (S31 + S32);
213 int TOF4 = (S21 * S22) * (S31 * S32);
214
215 int TOF5 = S12 * (S21 * S22);
216
217 int TOF6 = (S11 + S12) * (S31 + S32);
218 int TOF7 = (S11 * S12) * (S31 * S32);
219
220 // trigger configuration of the run
221 bool TCTOF1 = false;
222 bool TCTOF2 = false;
223 bool TCTOF3 = false;
224 bool TCTOF4 = false;
225 bool TCTOF5 = false;
226 bool TCTOF6 = false;
227 bool TCTOF7 = false;
228 if ( this->trigconf & (1<<0) ) TCTOF1 = true;
229 if ( this->trigconf & (1<<1) ) TCTOF2 = true;
230 if ( this->trigconf & (1<<2) ) TCTOF3 = true;
231 if ( this->trigconf & (1<<3) ) TCTOF4 = true;
232 if ( this->trigconf & (1<<4) ) TCTOF5 = true;
233 if ( this->trigconf & (1<<5) ) TCTOF6 = true;
234 if ( this->trigconf & (1<<6) ) TCTOF7 = true;
235
236 // do patterntrig pmts match the trigger configuration?
237 bool patterntrig_trigconf_match = true;
238 if ( TOF1 == 0 && TCTOF1 ) patterntrig_trigconf_match = false;
239 if ( TOF2 == 0 && TCTOF2 ) patterntrig_trigconf_match = false;
240 if ( TOF3 == 0 && TCTOF3 ) patterntrig_trigconf_match = false;
241 if ( TOF4 == 0 && TCTOF4 ) patterntrig_trigconf_match = false;
242 if ( TOF5 == 0 && TCTOF5 ) patterntrig_trigconf_match = false;
243 if ( TOF6 == 0 && TCTOF6 ) patterntrig_trigconf_match = false;
244 if ( TOF7 == 0 && TCTOF7 ) patterntrig_trigconf_match = false;
245
246 return patterntrig_trigconf_match;
247 }

  ViewVC Help
Powered by ViewVC 1.1.23