Skip to content
Snippets Groups Projects
Select Git revision
  • f9e0943e376629bbafd30654960ba472592f25f3
  • master default protected
  • nightly_master
  • online_much_readconf_cleanup protected
  • online_mvd_readconf_cleanup protected
  • jul25_patches
  • cleanup_rich_v25a
  • jul24_patches
  • nov23_patches
  • DC_2404
  • nighly_master
  • DC_Jan24
  • DC_Nov23
  • DC_Oct23
  • feb23_patches
  • L1Algo-dev9
  • dec21_patches protected
  • apr21_patches protected
  • dev_2025_45
  • dev_2025_44
  • dev_2025_43
  • dev_2025_42
  • dev_2025_41
  • dev_2025_40
  • dev_2025_39
  • dev_2025_38
  • dev_2025_37
  • dev_2025_36
  • dev_2025_35
  • dev_2025_34
  • dev_2025_33
  • dev_2025_32
  • dev_2025_31
  • dev_2025_30
  • RC_jul25
  • dev_2025_29
  • dev_2025_28
  • dev_2025_27
38 results

RecoParams.h

Blame
  • L1AlgoInputData.cxx 7.05 KiB
    /* Copyright (C) 2017-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
       SPDX-License-Identifier: GPL-3.0-only
       Authors: Maksym Zyzak [committer] */
    
    #include "L1AlgoInputData.h"
    
    #include <cstring>
    #include <iostream>
    using namespace std;
    using std::ios;
    /*
    L1AlgoInputData::L1AlgoInputData( const L1AlgoInputData& a)
    {
      SetData( a.GetStsHits(), a.GetStsStrips(), a.GetStsStripsB(),
               a.GetSFlag(), a.GetSFlagB(), a.GetStsHitsStartIndex(), a.GetStsHitsStopIndex());
    }
    
    
    const L1AlgoInputData& L1AlgoInputData::operator=( const L1AlgoInputData& a)
    {
      SetData( a.GetStsHits(), a.GetStsStrips(), a.GetStsStripsB(),
               a.GetSFlag(), a.GetSFlagB(), a.GetStsHitsStartIndex(), a.GetStsHitsStopIndex());
      return a;
    }
    
    
    void L1AlgoInputData::SetData( const vector< L1Hit >      & StsHits_,
                                       const vector< L1Strip >       & StsStrips_,
                                       const vector< L1Strip >       & StsStripsB_,
                                       const vector< unsigned char > & SFlag_,
                                       const vector< unsigned char > & SFlagB_,
                                       const L1HitIndex_t* StsHitsStartIndex_,
                                       const L1HitIndex_t* StsHitsStopIndex_ )
    {
      vStsHits.resize(StsHits_.size());
      vStsStrips.resize(StsStrips_.size());
      vStsStripsB.resize(StsStripsB_.size());
      fStripFlag.resize(SFlag_.size());
      fStripFlagB.resize(SFlagB_.size());
      
      for(unsigned int i=0; i<StsHits_.size(); ++i ) {vStsHits[i] = StsHits_[i];
    
    }
      for(unsigned int i=0; i<StsStrips_.size(); ++i ) vStsStrips[i] = StsStrips_[i];
      for(unsigned int i=0; i<StsStripsB_.size(); ++i ) vStsStripsB[i] = StsStripsB_[i];  
      for(unsigned int i=0; i<SFlag_.size(); ++i ) fStripFlag[i] = SFlag_[i];
      for(unsigned int i=0; i<SFlagB_.size(); ++i ) fStripFlagB[i] = SFlagB_[i];
    
      for(unsigned int i=0; i<MaxNStations+1; ++i) StsHitsStartIndex[i] = StsHitsStartIndex_[i];
     
      for(unsigned int i=0; i<MaxNStations+1; ++i) StsHitsStopIndex[i]  = StsHitsStopIndex_[i];
    }
    
    */
    
    /****************************************************************************************************************/
    
    void L1AlgoInputData::Clear()
    {
      vStsHits.clear();
      NStsStrips = 0;
      fStripFlag.clear();
      {
        for (int i = 0; i < kMaxNStations + 1; ++i) {
          StsHitsStartIndex[i] = 0;
        }
        for (int i = 0; i < kMaxNStations + 1; ++i) {
          StsHitsStopIndex[i] = 0;
        }
      }
    }
    
    /****************************************************************************************************************/
    
    istream& L1AlgoInputData::eatwhite(istream& is)  // skip spaces
    {
      char c;
      while (is.get(c)) {
        if (isspace(c) == 0) {
          is.putback(c);
          break;
        }
      }
      return is;
    }
    
    /****************************************************************************************************************/
    
    bool L1AlgoInputData::ReadHitsFromFile(const char work_dir[100], const int maxNEvent, const int iVerbose)
    {
      static int nEvent = 1;
      static ifstream fadata;
      static char fname[100];
    
      if (nEvent == 1) {
        strcpy(fname, work_dir);
        strcat(fname, "data_algo.txt");
        fadata.open(fname);
      }
      if (!fadata.is_open()) return 0;
    
      if (nEvent <= maxNEvent) {
    
        vStsHits.clear();
        NStsStrips = 0;
    
        fStripFlag.clear();
    
        // check correct position in file
        char s[] = "Event:  ";
        int nEv;
        fadata >> s;
        //    cout << s<<  " s"<<endl;
        fadata >> nEv;
        //  cout << nEv<<  " nEv"<<endl;
    
        if (nEv != nEvent) cout << "-E- CbmL1: Can't read event number " << nEvent << " from file " << fname << endl;
    
        int n;  // number of elements
          // read algo->vStsStrips
        fadata >> n;
        //     cout << n<<  " vStsStrips"<<endl;
        NStsStrips = n;
        if (iVerbose >= 4) {
          cout << "vStsStrips[" << n << "]"
               << " have been read." << endl;
        }
        // read algo->fStripFlag
        fadata >> n;
        //  cout << n<<  " fStripFlagB"<<endl;
        fStripFlag.reserve(n);
        for (int i = 0; i < n; i++) {
          int element;
          fadata >> element;
          fStripFlag.push_back(static_cast<unsigned char>(element));
        }
        if (iVerbose >= 4) {
          cout << "fStripFlag[" << n << "]"
               << " have been read." << endl;
        }
        // read algo->vStsHits
        fadata >> n;
        //   cout << n<<  " vStsHits"<<endl;
        int element_f;  // for convert
        int element_b;
        int element_n;
        for (int i = 0; i < n; i++) {
          L1Hit element;
          fadata >> element_f >> element_b >> element_n >> element.z >> element.u >> element.v >> element.t;
          element.f = static_cast<L1HitIndex_t>(element_f);
          element.b = static_cast<L1HitIndex_t>(element_b);
    #ifdef USE_EVENT_NUMBER
          element.n = static_cast<unsigned short int>(element_n);
    #endif
          vStsHits.push_back(element);
        }
        if (iVerbose >= 4) {
          cout << "vStsHits[" << n << "]"
               << " have been read." << endl;
        }
        // read StsHitsStartIndex and StsHitsStopIndex
        n = 20;
        for (int i = 0; i < n; i++) {
          int tmp;
          fadata >> tmp;
          if (kMaxNStations + 1 > i) StsHitsStartIndex[i] = tmp;
          //   cout << " StsHitsStartIndex[i]"<< StsHitsStartIndex[i] << endl;
    
          //    cout << tmp<<  " tmp"<<endl;
        }
        for (int i = 0; i < n; i++) {
          int tmp;
          fadata >> tmp;
          if (kMaxNStations + 1 > i) StsHitsStopIndex[i] = tmp;
          //   cout << " StsHitsStopIndex[i]"<< StsHitsStopIndex[i] << endl;
          //   cout << tmp<<  " tmp"<<endl;
        }
    
        if (iVerbose >= 2) {
          cout << "-I- CbmL1: CATrackFinder data for event " << nEvent << " has been read from file " << fname
               << " successfully." << endl;
        }
        //    if (nEvent == maxNEvent) fadata.close();
      }
      nEvent++;
      return 1;
    }  // void L1AlgoInputData::ReadStAPAlgoData()
    
    /****************************************************************************************************************/
    
    /*
    void L1AlgoInputData::PrintHits()
    {
      std::cout << "Event:  " << std::endl;
    
      int n = vStsStrips.size();  // number of elements
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << vStsStrips[i] << std::endl;
      }
    
      n = vStsStripsB.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << vStsStripsB[i] << std::endl;
      }
    
    
      n = fStripFlag.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << static_cast<int>(fStripFlag[i]) << std::endl;
      }
    
      n = fStripFlagB.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << static_cast<int>(fStripFlagB[i]) << std::endl;
      }
    
      n = vStsHits.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << static_cast<int>(vStsHits[i].f) << " ";
        std::cout << static_cast<int>(vStsHits[i].b) << " ";
        std::cout << (vStsHits[i].z) << std::endl;
      }
    
      n = 20;
      for (int i = 0; i < n; i++){
        if (MaxNStations+1 > i) std::cout << StsHitsStartIndex[i] <<std::endl;
        else std::cout << "0" <<std::endl;
      }
      for (int i = 0; i < n; i++){
        if (MaxNStations+1 > i) std::cout << StsHitsStopIndex[i] <<std::endl;
        else std::cout << "0" <<std::endl;
      }
    
    } // void L1AlgoInputData::ReadStAPAlgoData()
    
    */