Skip to content
Snippets Groups Projects
Select Git revision
  • dev
  • master default protected
  • kernel-rework
  • kernel-templates
  • memgroups
  • v0.7.3
  • v0.7.2
  • v0.7.1
  • v0.7.0
  • v0.6.4
  • v0.6.3
  • v0.6.2
  • v0.6.1
  • v0.6.0
  • v0.5.4
  • v0.5.3
  • v0.5.2
  • v0.5.1
  • v0.5.0
  • v0.4.4
  • v0.4.3
  • v0.4.2
  • v0.4.1
  • v0.4.0
  • v0.3.0
25 results

README.md

Blame
  • L1AlgoInputData.cxx 6.94 KiB
    #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.GetStsZPos(),
               a.GetSFlag(), a.GetSFlagB(), a.GetStsHitsStartIndex(), a.GetStsHitsStopIndex());
    }
    
    
    const L1AlgoInputData& L1AlgoInputData::operator=( const L1AlgoInputData& a)
    {
      SetData( a.GetStsHits(), a.GetStsStrips(), a.GetStsStripsB(), a.GetStsZPos(),
               a.GetSFlag(), a.GetSFlagB(), a.GetStsHitsStartIndex(), a.GetStsHitsStopIndex());
      return a;
    }
    
    
    void L1AlgoInputData::SetData( const vector< L1StsHit >      & StsHits_,
                                       const vector< L1Strip >       & StsStrips_,
                                       const vector< L1Strip >       & StsStripsB_,
                                       const vector< fscal >         & StsZPos_,
                                       const vector< unsigned char > & SFlag_,
                                       const vector< unsigned char > & SFlagB_,
                                       const THitI* StsHitsStartIndex_,
                                       const THitI* StsHitsStopIndex_ )
    {
      vStsHits.resize(StsHits_.size());
      vStsStrips.resize(StsStrips_.size());
      vStsStripsB.resize(StsStripsB_.size());
      vStsZPos.resize(StsZPos_.size());
      vSFlag.resize(SFlag_.size());
      vSFlagB.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<StsZPos_.size(); ++i ) vStsZPos[i] = StsZPos_[i];
      for(unsigned int i=0; i<SFlag_.size(); ++i ) vSFlag[i] = SFlag_[i];
      for(unsigned int i=0; i<SFlagB_.size(); ++i ) vSFlagB[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];
    }
    
    */
    
    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;
    
        vStsZPos.clear();
        vSFlag.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->vStsZPos
        fadata >> n;
        //   cout << n<<  " vStsZPos"<<endl;
        for (int i = 0; i < n; i++) {
          fscal element;
          fadata >> element;
          vStsZPos.push_back(element);
        }
        if (iVerbose >= 4) {
          cout << "vStsZPos[" << n << "]"
               << " have been read." << endl;
        }
        // read algo->vSFlag
        fadata >> n;
        //  cout << n<<  " vSFlagB"<<endl;
        for (int i = 0; i < n; i++) {
          int element;
          fadata >> element;
          vSFlag.push_back(static_cast<unsigned char>(element));
        }
        if (iVerbose >= 4) {
          cout << "vSFlag[" << 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;
        int element_iz;
        for (int i = 0; i < n; i++) {
          L1StsHit element;
          fadata >> element_f >> element_b >> element_n >> element_iz >> element.u
            >> element.v >> element.t_reco;
          element.f = static_cast<THitI>(element_f);
          element.b = static_cast<THitI>(element_b);
    #ifdef USE_EVENT_NUMBER
          element.n = static_cast<unsigned short int>(element_n);
    #endif
          element.iz     = static_cast<TZPosI>(element_iz);
          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 (MaxNStations + 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 (MaxNStations + 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 = vStsZPos.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << vStsZPos[i] << std::endl;
      }
    
      n = vSFlag.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << static_cast<int>(vSFlag[i]) << std::endl;
      }
    
      n = vSFlagB.size();
      std::cout << n << std::endl;
      for (int i = 0; i < n; i++){
        std::cout << static_cast<int>(vSFlagB[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 << static_cast<int>(vStsHits[i].iz) << 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()
    
    */