/[PAMELA software]/calo/ground/LEVEL2/macros/CaloLEVEL2.cra
ViewVC logotype

Diff of /calo/ground/LEVEL2/macros/CaloLEVEL2.cra

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

revision 1.1.1.1 by mocchiut, Mon Dec 5 16:13:53 2005 UTC revision 1.2 by mocchiut, Fri Jan 13 09:50:10 2006 UTC
# Line 1  Line 1 
1  //  //
2  //   Given a calibration and a data file this program create an ntuple with LEVEL2 calorimeter variables - Emiliano Mocchiutti  //   Given a calibration and a data file this program create an ntuple with LEVEL2 calorimeter variables - Emiliano Mocchiutti
3  //  //
4  //   CaloLEVEL2.c      version 4.00  (2005-11-29)  //   CaloLEVEL2.c      version 4.01  (2006-01-11)
5  //  //
6  //   The only input needed is the path to the directory created by YODA for the data file you want to analyze.  //   The only input needed is the path to the directory created by YODA for the data file you want to analyze.
7  //  //
8  //   Changelog:  //   Changelog:
9  //  //
10    //   4.00 - 4.01 (2006-01-11): Bugs: in Makefile (nothing to worry about) and here clevel1.trkchi2 never filled! fixed. Not really processing self trigger events! fixed.
11    //                             Bug: not setting small values to zero after applying the cross-talk correction! fixed.
12    //
13  //   3.17 - 4.00 (2005-11-29): preparing for the final release, small changes in the makefile.  //   3.17 - 4.00 (2005-11-29): preparing for the final release, small changes in the makefile.
14  //  //
15  //   3.16 - 3.17 (2005-10-13): do not exclude all strips marked "bad" but only the ones with RMS>6.  //   3.16 - 3.17 (2005-10-13): do not exclude all strips marked "bad" but only the ones with RMS>6.
# Line 403  short int calolevel2core(Int_t ei, Int_t Line 406  short int calolevel2core(Int_t ei, Int_t
406                  };                            };          
407                  chdone[se] = 1;                  chdone[se] = 1;
408              };              };
409              if ( clevel2.crc[se] == 0 && calib.good2 == 1 ){                  if ( clevel2.crc[se] == 0 && (calib.good2 == 1 || clevel2.trigty == 2)){    
410                  pre = -1;                  pre = -1;
411                  if ( isRAW ){                  if ( isRAW ){
412                    for (Int_t nn = 0; nn < 96; nn++){                                    for (Int_t nn = 0; nn < 96; nn++){                
# Line 508  short int calolevel2core(Int_t ei, Int_t Line 511  short int calolevel2core(Int_t ei, Int_t
511                              // OK, now in estrip we have the energy deposit in MIP of all the strips for this event (at the end of loops of course)                              // OK, now in estrip we have the energy deposit in MIP of all the strips for this event (at the end of loops of course)
512                              //                              //
513                              //                      if ( clevel1.estrip[n][m][l] < evento.emin || calib.calgood[l][m][n] != 0 ) {                              //                      if ( clevel1.estrip[n][m][l] < evento.emin || calib.calgood[l][m][n] != 0 ) {
514                              if ( clevel1.estrip[n][m][l] < evento.emin || calib.calrms[l][m][n] > 26 ) {                              //                      if ( clevel1.estrip[n][m][l] < evento.emin || calib.calrms[l][m][n] > 26 ) {
515                                  clevel1.estrip[n][m][l] = 0.;                              //  clevel1.estrip[n][m][l] = 0.;
516                              };                              //                      };
517                              qpre[pre] += clevel1.estrip[n][m][l];                              qpre[pre] += clevel1.estrip[n][m][l];
518                          };                          };
519                          calib.sbase[l][m][pre] = evento.base[l][m][pre];                          calib.sbase[l][m][pre] = evento.base[l][m][pre];
# Line 532  short int calolevel2core(Int_t ei, Int_t Line 535  short int calolevel2core(Int_t ei, Int_t
535                      };                      };
536                  };                  };
537                  //                  //
538                  Int_t jj = -2;                  Int_t j4 = -4;
539                  Int_t jjj = -3;                  Int_t jjj = -3;
540                  for (Int_t j = 0 ; j < 98 ; j++){                  Int_t jj = -2;
541                    for (Int_t j = 0 ; j < 100 ; j++){
542                      jj++;                      jj++;
543                      jjj++;                      jjj++;
544                        j4++;
545                      if ( j < 96 ) ene[j] = clevel1.estrip[j][m][l];                      if ( j < 96 ) ene[j] = clevel1.estrip[j][m][l];
546                      if ( jj >= 0 && jj < 96 ){                      if ( jj >= 0 && jj < 96 ){
547                          if ( jj != 0 && jj != 32 && jj != 64 ) ene[jj-1] = ene[jj-1] - clevel1.estrip[jj][m][l] * 0.01581;                          if ( jj != 0 && jj != 32 && jj != 64 ) ene[jj-1] = ene[jj-1] - clevel1.estrip[jj][m][l] * 0.01581;
# Line 546  short int calolevel2core(Int_t ei, Int_t Line 551  short int calolevel2core(Int_t ei, Int_t
551                          if ( jjj != 0 && jjj != 32 && jjj != 64 ) clevel1.estrip[jjj-1][m][l] = clevel1.estrip[jjj-1][m][l] - ene[jjj] * 0.01581;                          if ( jjj != 0 && jjj != 32 && jjj != 64 ) clevel1.estrip[jjj-1][m][l] = clevel1.estrip[jjj-1][m][l] - ene[jjj] * 0.01581;
552                          if ( jjj != 31 && jjj != 63 && jjj != 95 ) clevel1.estrip[jjj+1][m][l] = clevel1.estrip[jjj+1][m][l] - ene[jjj] * 0.01581;                          if ( jjj != 31 && jjj != 63 && jjj != 95 ) clevel1.estrip[jjj+1][m][l] = clevel1.estrip[jjj+1][m][l] - ene[jjj] * 0.01581;
553                      };                      };
554                        if ( j4 >= 0 && j4 < 96 ){
555                          if ( clevel1.estrip[j4][m][l]!=0. && ( clevel1.estrip[j4][m][l] < evento.emin || calib.calrms[l][m][j4] > 26 )){
556                            clevel1.estrip[j4][m][l] = 0.;
557                          };
558                        };
559                  };                  };
560                  //                  //
561              } else {              } else {
# Line 566  short int calolevel2core(Int_t ei, Int_t Line 576  short int calolevel2core(Int_t ei, Int_t
576      //      //
577      // all we need from the tracker is the state vector al_p and the boolean for good events:      // all we need from the tracker is the state vector al_p and the boolean for good events:
578      //      //
579        clevel1.trkchi2 = calib.trkchi2;
580      if ( calib.good2 ){      if ( calib.good2 ){
581        for (Int_t e = 0; e<5 ; e++){        for (Int_t e = 0; e<5 ; e++){
582          clevel1.al_p[e][0] = calib.al_p[e][0];          clevel1.al_p[e][0] = calib.al_p[e][0];
# Line 581  short int calolevel2core(Int_t ei, Int_t Line 592  short int calolevel2core(Int_t ei, Int_t
592      };      };
593      //      //
594      // for each event generate level2 data (clevel2) calling the fortran routine and passing calibrated data (clevel1):      // for each event generate level2 data (clevel2) calling the fortran routine and passing calibrated data (clevel1):
595      //      //    
596      cfillcalol2(clevel1,clevel2);      cfillcalol2(clevel1,clevel2);
597      //            //      
598      // save in the class the level2 calorimeter informations      // save in the class the level2 calorimeter informations
# Line 1392  short int CaloLEVEL2(TString filename,   Line 1403  short int CaloLEVEL2(TString filename,  
1403          // ====> NOTICE: in the case of no tracks or not good tracker events the program will fill the ntuple with zero values;                <====          // ====> NOTICE: in the case of no tracks or not good tracker events the program will fill the ntuple with zero values;                <====
1404          // ====> in case of multiple tracks the program will calculate variables using the state vector and rigidity of the first track stored <====          // ====> in case of multiple tracks the program will calculate variables using the state vector and rigidity of the first track stored <====
1405          //          //
1406            printf("Event %i \n",i);
1407          caloerr = calolevel2core(i,b,otr,tree,clevel2,evento,calib,calcalibfile);          caloerr = calolevel2core(i,b,otr,tree,clevel2,evento,calib,calcalibfile);
1408          //          //
1409          //          //

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

  ViewVC Help
Powered by ViewVC 1.1.23