/[PAMELA software]/calo/flight/CaloPreSampler/src/CaloPreSampler.cpp
ViewVC logotype

Diff of /calo/flight/CaloPreSampler/src/CaloPreSampler.cpp

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

revision 1.2 by mocchiut, Fri Jul 20 09:13:38 2007 UTC revision 1.8 by mocchiut, Tue Mar 11 16:15:13 2008 UTC
# Line 12  Line 12 
12   */   */
13  CaloPreSampler::CaloPreSampler(){  CaloPreSampler::CaloPreSampler(){
14    Clear();    Clear();
15  };  }
16    
17  CaloPreSampler::CaloPreSampler(PamLevel2 *l2p){    CaloPreSampler::CaloPreSampler(PamLevel2 *l2p){  
18    //    //
# Line 30  CaloPreSampler::CaloPreSampler(PamLevel2 Line 30  CaloPreSampler::CaloPreSampler(PamLevel2
30    cstrip = new CaloStrip(false);    cstrip = new CaloStrip(false);
31    //  c1 = new CaloLevel1();    //  c1 = new CaloLevel1();
32    pcalo = new CaloLevel2();    pcalo = new CaloLevel2();
33    N = 3;    N = 4;
34      NC = 22-N;
35    debug = false;    debug = false;
36    sel = true;    sel = true;
37    cont = false;    cont = false;
38    emulate18 = true;    emulate18 = true;
39    simulation = false;    simulation = false;
40      withtrk = true;
41      rigdefault = 50.;
42      nox = false;
43      noy = false;
44      forcecalo = false;
45    //    //
46    Clear();    Clear();
47    //    //
# Line 62  CaloPreSampler::CaloPreSampler(PamLevel2 Line 68  CaloPreSampler::CaloPreSampler(PamLevel2
68    printf(" Reading magnetic field maps at %s\n",(q4->PATH+q4->NAME).Data());    printf(" Reading magnetic field maps at %s\n",(q4->PATH+q4->NAME).Data());
69    trk->LoadField(q4->PATH+q4->NAME);    trk->LoadField(q4->PATH+q4->NAME);
70    //    //
71  };  }
72    
73    void CaloPreSampler::SetNoWpreSampler(Int_t n){
74      if ( NC+n < 23 ){
75        N = n;
76      } else {
77        printf(" ERROR! Calorimeter is made of 22 W planes\n");
78        printf(" you are giving N presampler = %i and N calo = %i \n",n,NC);
79        printf(" WARNING: using default values NWpre = 4, NWcalo = 18\n");
80        NC = 18;
81        N = 4;
82      };
83    }
84    
85    void CaloPreSampler::SetNoWcalo(Int_t n){
86      if ( N+n < 23 ){
87        NC = n;
88      } else {
89        printf(" ERROR! Calorimeter is made of 22 W planes\n");
90        printf(" you are giving N W presampler = %i and N W calo = %i \n",N,n);
91        printf(" WARNING: using default values NWpre = 4, NWcalo = 18\n");
92        NC = 18;
93        N = 4;
94      };
95    }
96    
97  void CaloPreSampler::Clear(){  void CaloPreSampler::Clear(){
98    //    //
99    pcalo->Clear();    pcalo->Clear();
100    //    //
101  };  }
102    
103  void CaloPreSampler::Print(){  void CaloPreSampler::Print(){
104    //    //
# Line 90  void CaloPreSampler::Print(){ Line 120  void CaloPreSampler::Print(){
120    };    };
121    printf("========================================================================\n");    printf("========================================================================\n");
122    //    //
123  };  }
124    
125  void CaloPreSampler::Delete(){  void CaloPreSampler::Delete(){
126    Clear();    Clear();
127    delete pcalo;    delete pcalo;
128    //delete this;    //delete this;
129  };  }
130    
131    
132  void CaloPreSampler::Process(){  void CaloPreSampler::Process(){
# Line 131  void CaloPreSampler::Process(){ Line 161  void CaloPreSampler::Process(){
161    Int_t S11 = 0;    Int_t S11 = 0;
162    Float_t tmptrigty = -1.;    Float_t tmptrigty = -1.;
163    Bool_t trackanyway = true;    Bool_t trackanyway = true;
164    Float_t rigdefault = 50.;    //  Float_t rigdefault = 50.;
165    Bool_t hZn = true;    Bool_t hZn = true;
166    Bool_t withtrk = true;    //  Bool_t withtrk = true;
167    Bool_t st = true;    Bool_t st = true;
168    Int_t ntrkentry = 0;    Int_t ntrkentry = 0;
169    TrkLevel2 *trk = L2->GetTrkLevel2();    TrkLevel2 *trk = L2->GetTrkLevel2();
# Line 153  void CaloPreSampler::Process(){ Line 183  void CaloPreSampler::Process(){
183      if ( L2->GetCaloLevel2()->GetCaloTrkVar(mm)->trkseqno == -2 ) m2 = true;      if ( L2->GetCaloLevel2()->GetCaloTrkVar(mm)->trkseqno == -2 ) m2 = true;
184      if ( L2->GetCaloLevel2()->GetCaloTrkVar(mm)->trkseqno == -3 ) m3 = true;      if ( L2->GetCaloLevel2()->GetCaloTrkVar(mm)->trkseqno == -3 ) m3 = true;
185    };    };
186      if ( !withtrk ) m3 = true;
187    //    //
188    if ( debug ) printf(" Fill estrip matrix needed to calculate variables \n");    if ( debug ) printf(" Fill estrip matrix needed to calculate variables \n");
189    //    //
# Line 167  void CaloPreSampler::Process(){ Line 198  void CaloPreSampler::Process(){
198      //      //
199      mip = L2->GetCaloLevel1()->DecodeEstrip(i,view,plane,strip);      mip = L2->GetCaloLevel1()->DecodeEstrip(i,view,plane,strip);
200      //      //
201        // Mask x or y view if nox and/or noy are true (default false)
202        //
203        if ( nox && view == 0 ) mip = 0.;
204        if ( noy && view == 1 ) mip = 0.;
205        //
206      // Selection mode: fill the matrix only for plane < (22 - N) REMEMBER N = number of W planes to be used as presampler, ie if N = 2 then we want to use planes from 0 to 19      // Selection mode: fill the matrix only for plane < (22 - N) REMEMBER N = number of W planes to be used as presampler, ie if N = 2 then we want to use planes from 0 to 19
207      //                 included so plane < (22 - 2)      //                 included so plane < (22 - 2)
208      //      //
209      if ( sel ){      if ( sel ){
210        if ( plane < (22 - N) ){        if ( plane < (22 - N) ){
211          //          //
212          if ( emulate18 && plane == (18 - N) ) mip = 0.;          if ( emulate18 && plane == (18 - N) && view == 0 ) mip = 0.;
213            if ( plane >= NC ) mip = 0.;
214          event->clevel1->estrip[strip][plane][view] = mip;          event->clevel1->estrip[strip][plane][view] = mip;
215          //          //
216        };        };
# Line 184  void CaloPreSampler::Process(){ Line 221  void CaloPreSampler::Process(){
221      if ( cont ){      if ( cont ){
222        if ( plane >= N ){        if ( plane >= N ){
223          //          //
224          if ( emulate18 && plane == (18 + N) ) mip = 0.;          if ( emulate18 && plane == (18 + N) && view == 0 ) mip = 0.;
225            if ( (plane-N) >= NC ) mip = 0.;
226          event->clevel1->estrip[strip][(plane-N)][view] = mip;          event->clevel1->estrip[strip][(plane-N)][view] = mip;
227          //          //
228        };        };
# Line 228  void CaloPreSampler::Process(){ Line 266  void CaloPreSampler::Process(){
266    //    //
267    // use only N W planes    // use only N W planes
268    //    //
269    event->clevel1->npla = 22-N;    //  event->clevel1->npla = 22-N;
270      event->clevel1->npla = NC;
271    //    //
272    S3 = 0;    S3 = 0;
273    S2 = 0;    S2 = 0;
# Line 248  void CaloPreSampler::Process(){ Line 287  void CaloPreSampler::Process(){
287    //    //
288    event->clevel1->good2 = 1;    event->clevel1->good2 = 1;
289    //    //
290      // copy variables calculated during calibration process which is skipped here...
291      //
292      event->clevel2->good = L2->GetCaloLevel2()->good;
293      memcpy(event->clevel2->perr,L2->GetCaloLevel2()->perr,sizeof(L2->GetCaloLevel2()->perr));
294      memcpy(event->clevel2->swerr,L2->GetCaloLevel2()->swerr,sizeof(L2->GetCaloLevel2()->swerr));
295      memcpy(event->clevel2->crc,L2->GetCaloLevel2()->crc,sizeof(L2->GetCaloLevel2()->crc));
296      event->clevel2->selftrigger = L2->GetCaloLevel2()->selftrigger;
297      //
298    // Calculate variables common to all tracks (qtot, nstrip, etc.)    // Calculate variables common to all tracks (qtot, nstrip, etc.)
299    //    //
300    if ( debug ) printf("1 Call GetCommonVar() \n");    if ( debug ) printf("1 Call GetCommonVar() \n");
# Line 311  void CaloPreSampler::Process(){ Line 358  void CaloPreSampler::Process(){
358    // conditions are: 0) no track from the tracker 1) we have a track fit both in x and y 2) no problems with calo for this event 3) no selftrigger event    // conditions are: 0) no track from the tracker 1) we have a track fit both in x and y 2) no problems with calo for this event 3) no selftrigger event
359    //    //
360    //  if ( trackanyway && !filled && event->clevel2->npcfit[0] >= 2 && event->clevel2->npcfit[1] >= 2 && event->clevel2->good != 0 && event->clevel2->trigty < 2. ){    //  if ( trackanyway && !filled && event->clevel2->npcfit[0] >= 2 && event->clevel2->npcfit[1] >= 2 && event->clevel2->good != 0 && event->clevel2->trigty < 2. ){
361    if ( trackanyway && m3 ){    if ( (trackanyway && m3) || forcecalo ){
362      if ( debug ) printf(" Event with a track not fitted by the tracker \n");      if ( debug ) printf(" Event with a track not fitted by the tracker \n");
363      //      //
364      // Disable "track mode" in the fortran routine      // Disable "track mode" in the fortran routine
# Line 453  void CaloPreSampler::Process(){ Line 500  void CaloPreSampler::Process(){
500    if ( debug ) this->Print();    if ( debug ) this->Print();
501    if ( debug ) printf(" exit \n");    if ( debug ) printf(" exit \n");
502    //    //
503  };  }

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

  ViewVC Help
Powered by ViewVC 1.1.23