/[PAMELA software]/PamelaLevel2/src/PamLevel2.cpp
ViewVC logotype

Diff of /PamelaLevel2/src/PamLevel2.cpp

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

revision 1.41 by pam-fi, Thu Aug 2 13:59:47 2007 UTC revision 1.44 by mocchiut, Mon Sep 3 09:16:48 2007 UTC
# Line 112  PamLevel2::PamLevel2(TString ddir,TStrin Line 112  PamLevel2::PamLevel2(TString ddir,TStrin
112    
113  void PamLevel2::Initialize(){  void PamLevel2::Initialize(){
114                    
 //     trk2_obj  = TrkLevel2::GetTrkLevel2();  
 //     trk1_obj  = TrkLevel1::GetTrkLevel1();  
 //     trkh_obj  = TrkHough::GetTrkHough();  
 //     calo1_obj = CaloLevel1::GetCaloLevel1();  
 //     calo2_obj = CaloLevel2::GetCaloLevel2();  
 //     tof_obj   = ToFLevel2::GetToFLevel2();  
 //     trig_obj  = TrigLevel2::GetTrigLevel2();  
 //     s4_obj    = S4Level2::GetS4Level2();  
 //     nd_obj    = NDLevel2::GetNDLevel2();  
 //     ac_obj    = AcLevel2::GetAcLevel2();  
 //     orb_obj   = OrbitalInfo::GetOrbitalInfo();  
       
115      h0_obj    = 0;      h0_obj    = 0;
116      trk0_obj  = 0;      trk0_obj  = 0;
117      calo0_obj  = 0;      calo0_obj  = 0;
# Line 198  void PamLevel2::Initialize(){ Line 186  void PamLevel2::Initialize(){
186    
187      SELLI = -1;      SELLI = -1;
188    
189        ISGP = false;
190    
191      tsorted=0;      tsorted=0;
192      timage=0;      timage=0;
193            
# Line 732  void PamLevel2::SortTracks(){ Line 722  void PamLevel2::SortTracks(){
722  //      else                 ti_score++;  //      else                 ti_score++;
723                    
724    
725            if( cp->npresh >= ci->npresh) tp_score++;            if( cp->npresh > ci->npresh) tp_score++;
726            else ti_score++;            if( cp->npresh < ci->npresh) ti_score++;
727              else ;//niente
728    
729          //      cout << "CALO "<<tp_score<<ti_score<<endl;          //      cout << "CALO "<<tp_score<<ti_score<<endl;
730    
# Line 898  void PamLevel2::SortTracks(){ Line 889  void PamLevel2::SortTracks(){
889            // --- modified to count tdc signals (more efficient?)            // --- modified to count tdc signals (more efficient?)
890            // --- and to implement check on tdcflag            // --- and to implement check on tdcflag
891            for (Int_t ih=0; ih < op->npmttdc; ih++){            for (Int_t ih=0; ih < op->npmttdc; ih++){
892              Int_t pl = tof_obj->GetPlaneIndex( (op->pmttdc).At(ih) );              //      Int_t pl = tof_obj->GetPlaneIndex( (op->pmttdc).At(ih) );
893  //          if( (op->tdcflag).At(ih)==0 && (pl == 1 || pl == 2 || pl == 5) )nphit_p++;  //          if( (op->tdcflag).At(ih)==0 && (pl == 1 || pl == 2 || pl == 5) )nphit_p++;
894              if( (op->tdcflag).At(ih)==0 )nphit_p++;              if( (op->tdcflag).At(ih)==0 )nphit_p++;
895            };            };
896                                    
897            for (Int_t ih=0; ih < oi->npmttdc; ih++){            for (Int_t ih=0; ih < oi->npmttdc; ih++){
898              Int_t pl = tof_obj->GetPlaneIndex( (oi->pmttdc).At(ih) );              //      Int_t pl = tof_obj->GetPlaneIndex( (oi->pmttdc).At(ih) );
899  //          if( (oi->tdcflag).At(ih)==0 && (pl == 1 || pl == 2 || pl == 5) )nphit_i++;    //          if( (oi->tdcflag).At(ih)==0 && (pl == 1 || pl == 2 || pl == 5) )nphit_i++;  
900              if( (oi->tdcflag).At(ih)==0 )nphit_i++;                  if( (oi->tdcflag).At(ih)==0 )nphit_i++;    
901            };            };
# Line 913  void PamLevel2::SortTracks(){ Line 904  void PamLevel2::SortTracks(){
904               (nphit_p+nphit_i) !=0 &&                 (nphit_p+nphit_i) !=0 &&  
905               true){               true){
906                                            
907              if( nphit_p >= nphit_i) tp_score++;              if     ( nphit_p > nphit_i) tp_score++;
908              else ti_score++;              else if( nphit_p < nphit_i) ti_score++;
909                else ;//niente
910            };            };
911          };          };
912          //      cout << "TOF "<<tp_score<<ti_score<<endl;          //      cout << "TOF "<<tp_score<<ti_score<<endl;
# Line 1916  Bool_t PamLevel2::UpdateRunInfo(TChain * Line 1908  Bool_t PamLevel2::UpdateRunInfo(TChain *
1908        //        //
1909        // the absolute time is necessary to relate the event with the run        // the absolute time is necessary to relate the event with the run
1910        //        //
1911        if( !GetOrbitalInfo() ){        if( !GetOrbitalInfo() && !ISGP){
1912            cout << "Bool_t PamLevel2::UpdateRunInfo(TChain *run, ULong64_t iev) -- ERROR -- missing OrbitalInfo "<<endl;            cout << "Bool_t PamLevel2::UpdateRunInfo(TChain *run, ULong64_t iev) -- ERROR -- missing OrbitalInfo "<<endl;
1913            return(false);            return(false);
1914        }        }
1915    
1916          ULong64_t abstime = 0;
1917          if( GetOrbitalInfo() )abstime=GetOrbitalInfo()->absTime;
1918    
1919    
1920        //        //
1921        // the first time the routine is called, set run search from the beginning        // the first time the routine is called, set run search from the beginning
1922        //        //
# Line 1930  Bool_t PamLevel2::UpdateRunInfo(TChain * Line 1926  Bool_t PamLevel2::UpdateRunInfo(TChain *
1926            runfirstentry = 0LL;            runfirstentry = 0LL;
1927            runlastentry += (Long64_t)(this->GetRunInfo()->NEVENTS);            runlastentry += (Long64_t)(this->GetRunInfo()->NEVENTS);
1928            if ( (Long64_t)(this->GetRunInfo()->NEVENTS) > 0LL ) runlastentry -= 1LL;            if ( (Long64_t)(this->GetRunInfo()->NEVENTS) > 0LL ) runlastentry -= 1LL;
1929              
1930              if( ISGP && run->GetEntries()!=1 ){
1931                  cout << "** WARNING ** simulated files are assumed to have 1 single run, not "<< run->GetEntries() << endl;
1932                  cout << "** WARNING ** run will not be updated"<<endl;
1933              }
1934    
1935        };              };      
1936        //        //
1937         if ( irun == run->GetEntries()-1LL &&        if(ISGP)abstime = GetRunInfo()->RUNHEADER_TIME; // BARBATRUCCO
1938             !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME &&        //
1939               GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME)        if ( irun == run->GetEntries()-1LL &&
1940               !(abstime >= GetRunInfo()->RUNHEADER_TIME &&
1941                 abstime <= GetRunInfo()->RUNTRAILER_TIME)
1942              ){              ){
1943           irun = -1LL;           irun = -1LL;
1944           runfirstentry = 0LL;           runfirstentry = 0LL;
# Line 1945  Bool_t PamLevel2::UpdateRunInfo(TChain * Line 1949  Bool_t PamLevel2::UpdateRunInfo(TChain *
1949        //        //
1950        bool fromfirst = true;        bool fromfirst = true;
1951        //        //
1952        while ( !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME && GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME) && irun < run->GetEntries()-1LL ){        while ( !(abstime >= GetRunInfo()->RUNHEADER_TIME && abstime <= GetRunInfo()->RUNTRAILER_TIME) && irun < run->GetEntries()-1LL ){
1953  //      while ( iev > (runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS-1)) && irun < run->GetEntries() ){  //      while ( iev > (runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS-1)) && irun < run->GetEntries() ){
1954            irun++;            irun++;
1955            run->GetEntry(irun);            run->GetEntry(irun);
# Line 1955  Bool_t PamLevel2::UpdateRunInfo(TChain * Line 1959  Bool_t PamLevel2::UpdateRunInfo(TChain *
1959  //        cout << " ))))) UPDATE RUN INFO (((((  @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl;  //        cout << " ))))) UPDATE RUN INFO (((((  @iev "<<iev<<" run "<<GetRunInfo()->ID<<" irun "<<irun<<endl;
1960  //        cout << "runfirstentry "<<runfirstentry<<endl;  //        cout << "runfirstentry "<<runfirstentry<<endl;
1961            //      printf(" iev %llu %u %llu \n",iev,this->GetRunInfo()->NEVENTS,(ULong64_t)(runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS)));            //      printf(" iev %llu %u %llu \n",iev,this->GetRunInfo()->NEVENTS,(ULong64_t)(runfirstentry+(ULong64_t)(this->GetRunInfo()->NEVENTS)));
1962            //      printf(" abstime %u trailertime %u \n",GetOrbitalInfo()->absTime,GetRunInfo()->RUNTRAILER_TIME);            //      printf(" abstime %u trailertime %u \n",abstime,GetRunInfo()->RUNTRAILER_TIME);
1963            //      printf(" IDRUN %u \n",GetRunInfo()->ID);            //      printf(" IDRUN %u \n",GetRunInfo()->ID);
1964            //            //
1965  //        prevshift = 0;  //        prevshift = 0;
1966            //            //
1967            if ( irun == (Long64_t)(run->GetEntries()-1LL) && fromfirst && !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME && GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME)){            if ( irun == (Long64_t)(run->GetEntries()-1LL) && fromfirst && !(abstime >= GetRunInfo()->RUNHEADER_TIME && abstime <= GetRunInfo()->RUNTRAILER_TIME)){
1968                printf(" resetting irun  (it should NOT happen!!!)\n");                printf(" resetting irun  (it should NOT happen!!!)\n");
1969                fromfirst = false;                fromfirst = false;
1970                irun = 0;                irun = 0;
# Line 1973  Bool_t PamLevel2::UpdateRunInfo(TChain * Line 1977  Bool_t PamLevel2::UpdateRunInfo(TChain *
1977        };        };
1978        //        //
1979        if (        if (
1980             !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME &&             !(abstime >= GetRunInfo()->RUNHEADER_TIME &&
1981               GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME)               abstime <= GetRunInfo()->RUNTRAILER_TIME)
1982            ) {            ) {
1983            printf(" Something very wrong here: cannot find RUN containing absolute time %u \n",GetOrbitalInfo()->absTime);          printf(" Something very wrong here: cannot find RUN containing absolute time %llu \n",abstime);
1984            return false;            return false;
1985        }        }
1986        //        //
# Line 2027  Bool_t PamLevel2::UpdateRunInfo(Long64_t Line 2031  Bool_t PamLevel2::UpdateRunInfo(Long64_t
2031      // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-      // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
2032      if(SELLI==0){      if(SELLI==0){
2033    
2034            ULong64_t abstime = 0;
2035            ULong64_t obt     = 0;
2036            if( GetOrbitalInfo() ){
2037                abstime = GetOrbitalInfo()->absTime;
2038                obt     = GetOrbitalInfo()->OBT;
2039            }
2040          // ---------------------------------------------------------------          // ---------------------------------------------------------------
2041          // the absolute time is necessary to relate the event with the run          // the absolute time is necessary to relate the event with the run
2042          // ---------------------------------------------------------------          // ---------------------------------------------------------------
2043          if( !GetOrbitalInfo() ){          if( !GetOrbitalInfo() && !ISGP ){
2044              cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- ERROR -- missing OrbitalInfo "<<endl;              cout << "Bool_t PamLevel2::UpdateRunInfo(Long64_t iev) -- ERROR -- missing OrbitalInfo "<<endl;
2045              return(false);              return(false);
2046          }          }
# Line 2043  Bool_t PamLevel2::UpdateRunInfo(Long64_t Line 2053  Bool_t PamLevel2::UpdateRunInfo(Long64_t
2053              irunentry = 0;              irunentry = 0;
2054              prevshift = 0;              prevshift = 0;
2055              run_tree->GetEntry(irun);              run_tree->GetEntry(irun);
2056    
2057                if( ISGP && run_tree->GetEntries()!=1 ){
2058                    cout << "** WARNING ** simulated files are assumed to have 1 single run, not "<< run_tree->GetEntries() << endl;
2059                    cout << "** WARNING ** run will not be updated"<<endl;
2060                }
2061          };                };      
2062    
2063            // -----------------------------------------------------------------------
2064            // if it is simulation, assigh abstime by end (temporaneo!!!)
2065            // -----------------------------------------------------------------------
2066            if(ISGP){
2067                abstime = GetRunInfo()->RUNHEADER_TIME; // BARBATRUCCO
2068                obt     = GetRunInfo()->RUNHEADER_OBT; // BARBATRUCCO
2069            }
2070          //          //
2071          bool fromfirst = true; // first loop over runs          bool fromfirst = true; // first loop over runs
2072    
# Line 2057  Bool_t PamLevel2::UpdateRunInfo(Long64_t Line 2080  Bool_t PamLevel2::UpdateRunInfo(Long64_t
2080          while (          while (
2081              (              (
2082                  (                  (
2083                      !(GetOrbitalInfo()->absTime >= GetRunInfo()->RUNHEADER_TIME &&    // check on absolute time (s)                      !(abstime >= GetRunInfo()->RUNHEADER_TIME &&    // check on absolute time (s)
2084                        GetOrbitalInfo()->absTime <= GetRunInfo()->RUNTRAILER_TIME) &&                        abstime <= GetRunInfo()->RUNTRAILER_TIME) &&
2085                      !(GetOrbitalInfo()->OBT >= GetRunInfo()->RUNHEADER_OBT &&         // additional check on OBT (ms)                      !(obt >= GetRunInfo()->RUNHEADER_OBT &&         // additional check on OBT (ms)
2086                        GetOrbitalInfo()->OBT <= GetRunInfo()->RUNTRAILER_OBT)                        obt <= GetRunInfo()->RUNTRAILER_OBT)
2087                      )                      )
2088                  || GetRunInfo()->NEVENTS==0                  || GetRunInfo()->NEVENTS==0
2089                  || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift)                  || !(irunentry < GetRunInfo()->NEVENTS-1-prevshift)
# Line 3176  Int_t PamLevel2::GetYodaEntry(){ Line 3199  Int_t PamLevel2::GetYodaEntry(){
3199    
3200  //     cout << " irun "<< irun << " irunentry "<< irunentry<<" run_obj->EV_FROM "<<run_obj->EV_FROM <<" quella giusta "<<quellagiusta << endl;  //     cout << " irun "<< irun << " irunentry "<< irunentry<<" run_obj->EV_FROM "<<run_obj->EV_FROM <<" quella giusta "<<quellagiusta << endl;
3201  //     cout << " iroot "<<iroot<<" run_obj->ID_ROOT_L0 "<<run_obj->ID_ROOT_L0<<endl;  //     cout << " iroot "<<iroot<<" run_obj->ID_ROOT_L0 "<<run_obj->ID_ROOT_L0<<endl;
3202  //     cout << " time "<< GetOrbitalInfo()->absTime << endl;  //     cout << " time "<< abstime << endl;
3203  //     cout << " trk_calib_used "<<run_obj->TRK_CALIB_USED<< endl;  //     cout << " trk_calib_used "<<run_obj->TRK_CALIB_USED<< endl;
3204            
3205      if( !GetOrbitalInfo() ){      ULong64_t obt     = 0;
3206        ULong64_t pktn    = 0;
3207        if( GetOrbitalInfo() ){
3208            obt     = GetOrbitalInfo()->OBT;
3209            pktn    = GetOrbitalInfo()->pkt_num;
3210        }
3211    
3212        if( !GetOrbitalInfo() && !ISGP){
3213          cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- missing OrbitalInfo "<<endl;          cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- missing OrbitalInfo "<<endl;
3214          return 0;          return 0;
3215      }      }
3216      if( GetOrbitalInfo()->OBT==0 && GetOrbitalInfo()->pkt_num==0 ){      if( obt==0 && pktn==0 && !ISGP ){
3217          cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- level2 event corrupted ?? "<<endl;          cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- level2 event corrupted ?? "<<endl;
3218          return 0;          return 0;
3219      }      }
# Line 3205  Int_t PamLevel2::GetYodaEntry(){ Line 3235  Int_t PamLevel2::GetYodaEntry(){
3235      Int_t maxshift = 10;      Int_t maxshift = 10;
3236      do{      do{
3237          if(shift>0){              if(shift>0){    
3238              cout << " PKTNUM  L2 --- "<< GetOrbitalInfo()->pkt_num << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl;              cout << " PKTNUM  L2 --- "<< pktn << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl;
3239              cout << "         RUN: ID "<< GetRunInfo()->ID << " ID_ROOT_L0 "<<run_obj->ID_ROOT_L0<<" ID_RUN_FRAG "<<GetRunInfo()->ID_RUN_FRAG << " EV_FROM "<<GetRunInfo()->EV_FROM  <<endl;              cout << "         RUN: ID "<< GetRunInfo()->ID << " ID_ROOT_L0 "<<run_obj->ID_ROOT_L0<<" ID_RUN_FRAG "<<GetRunInfo()->ID_RUN_FRAG << " EV_FROM "<<GetRunInfo()->EV_FROM  <<endl;
3240              cout << "         L2 <--> L0 mismatch ( irun "<<irun<<" irunentry "<<irunentry<<" shift "<<shift<<" prevshift "<<prevshift<<" )"<<endl;              cout << "         L2 <--> L0 mismatch ( irun "<<irun<<" irunentry "<<irunentry<<" shift "<<shift<<" prevshift "<<prevshift<<" )"<<endl;
3241          }          }
# Line 3215  Int_t PamLevel2::GetYodaEntry(){ Line 3245  Int_t PamLevel2::GetYodaEntry(){
3245              cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- missing EventHeader "<<endl;              cout << "Int_t PamLevel2::GetYodaEntry() -- ERROR -- missing EventHeader "<<endl;
3246              return 0;              return 0;
3247          }          }
3248  //      cout << "PKTNUM "<<shift<<" ==  L2 --- "<< GetOrbitalInfo()->pkt_num << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl;  
3249  //      cout << " L2 --- "<< GetOrbitalInfo()->OBT << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetOrbitalTime()<<endl;          if(ISGP){
3250                obt = (UInt_t)(GetEventHeader()->GetPscuHeader()->GetOrbitalTime()); //BARBATRUCCO
3251                pktn = (UInt_t)(GetEventHeader()->GetPscuHeader()->GetCounter()); //BARBATRUCCO
3252            }
3253    
3254    //      cout << "PKTNUM "<<shift<<" ==  L2 --- "<< pktn << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetCounter()<<endl;
3255    //      cout << " L2 --- "<< obt << " --- L0 --- "<< GetEventHeader()->GetPscuHeader()->GetOrbitalTime()<<endl;
3256  //      if( (quellagiusta+shift) == l0_tree->GetEntries()+1 )cout << ">>> end of level0 tree <<<"<<endl;  //      if( (quellagiusta+shift) == l0_tree->GetEntries()+1 )cout << ">>> end of level0 tree <<<"<<endl;
3257  //      cout << " GetOrbitalInfo()->OBT "<< GetOrbitalInfo()->OBT << endl;  //      cout << " obt "<< obt << endl;
3258  //      cout << " GetEventHeader()->GetPscuHeader()->GetOrbitalTime() "<< GetEventHeader()->GetPscuHeader()->GetOrbitalTime() << endl;  //      cout << " GetEventHeader()->GetPscuHeader()->GetOrbitalTime() "<< GetEventHeader()->GetPscuHeader()->GetOrbitalTime() << endl;
3259  //      cout << " GetOrbitalInfo()->pkt_num "<< GetOrbitalInfo()->pkt_num << endl;  //      cout << " pktn "<< pktn << endl;
3260  //      cout << " GetEventHeader()->GetPscuHeader()->GetCounter() "<< GetEventHeader()->GetPscuHeader()->GetCounter() << endl;  //      cout << " GetEventHeader()->GetPscuHeader()->GetCounter() "<< GetEventHeader()->GetPscuHeader()->GetCounter() << endl;
3261  //      printf(" IDRUN %u \n",GetRunInfo()->ID);  //      printf(" IDRUN %u \n",GetRunInfo()->ID);
3262  //  //
# Line 3229  Int_t PamLevel2::GetYodaEntry(){ Line 3265  Int_t PamLevel2::GetYodaEntry(){
3265            shift = -1;            shift = -1;
3266          };          };
3267    
3268      }while( ( GetOrbitalInfo()->OBT != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetOrbitalTime()) || GetOrbitalInfo()->pkt_num != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetCounter())) && (quellagiusta+(Long64_t)shift) < GetYodaTree()->GetEntries() && shift < maxshift);      }while( ( obt != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetOrbitalTime()) ||
3269                  pktn != (UInt_t)(GetEventHeader()->GetPscuHeader()->GetCounter())       )
3270                && (quellagiusta+(Long64_t)shift) < GetYodaTree()->GetEntries() && shift < maxshift);
3271    
3272      if ( (quellagiusta+(Long64_t)shift+(Long64_t)prevshift) > GetYodaTree()->GetEntries() || shift == maxshift ) {      if ( (quellagiusta+(Long64_t)shift+(Long64_t)prevshift) > GetYodaTree()->GetEntries() || shift == maxshift ) {
3273          cout << " Big trouble here, no such event in Level0 data! " <<endl;          cout << " Big trouble here, no such event in Level0 data! " <<endl;

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.44

  ViewVC Help
Powered by ViewVC 1.1.23