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

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

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

revision 1.1 by mocchiut, Sat Jun 17 12:14:34 2006 UTC revision 1.7 by mocchiut, Thu Apr 12 12:27:16 2012 UTC
# Line 3  Line 3 
3  ClassImp(TrigLevel2);  ClassImp(TrigLevel2);
4    
5  TrigLevel2::TrigLevel2() {      TrigLevel2::TrigLevel2() {    
6      this->Clear();
7    }
8    
9    void TrigLevel2::Clear(Option_t *t){
10    evcount = 0;    evcount = 0;
11    for (Int_t kk=0; kk<3;kk++){    memset(pmtpl, 0, 3*sizeof(Int_t));
12      pmtpl[kk] = 0;    memset(patternbusy, 0, 3*sizeof(Int_t));
13      patternbusy[kk] = 0;    memset(trigrate, 0, 6*sizeof(Int_t));
14    }    memset(patterntrig, 0, 6*sizeof(Int_t));
15        memset(dltime, 0, 2*sizeof(Int_t));
16    for (Int_t kk=0; kk<6;kk++){    memset(s4calcount, 0, 2*sizeof(Int_t));
17      trigrate[kk] = 0;    memset(pmtcount1, 0, 24*sizeof(Int_t));
18      patterntrig[kk] = 0;    memset(pmtcount2, 0, 24*sizeof(Int_t));
19    }    trigconf = 0;
20        unpackError = 0;
21    for (Int_t kk=0; kk<2;kk++){  }
22      dltime[kk] = 0;  
23      s4calcount[kk] = 0;  /**
24    }   * Fills a struct cTrigLevel2 with values from a TrigLevel2 object (to put data into a F77 common).
25     */
26    for (Int_t kk=0; kk<24;kk++){  void TrigLevel2::GetLevel2Struct(cTrigLevel2 *l2) const{
27      pmtcount1[kk] = 0;  
28      pmtcount2[kk] = 0;    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    trigconf = 0;    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  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.23