Fork me on GitHub

Changeset 466 in svn for trunk/src/STDHEPConverter.cc


Ignore:
Timestamp:
Jul 10, 2009, 4:54:59 PM (15 years ago)
Author:
Xavier Rouby
Message:

bug fixed in the number of desired events to process

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/STDHEPConverter.cc

    r443 r466  
    6060//---------------------------------------------------------------------------
    6161
    62 void STDHEPConverter::AnalyseParticles(ExRootTreeBranch *branch)
    63 {
    64   int Nmax = -1;  // useless for the moment -- should be changed in order
    65   if(Nmax>0) Nmax = min(Nmax,myhepevt.nhep); // to use Nevt in DataConverter
    66   else Nmax = myhepevt.nhep;
    67 
     62void STDHEPConverter::AnalyseParticles(ExRootTreeBranch *branch)
     63{
    6864  TRootC::GenParticle *element;
    6965
     
    7268  Int_t number;
    7369
    74   for(number = 0; number < Nmax; ++number)
     70  for(number = 0; number < myhepevt.nhep; ++number)
    7571  {
    7672    element = static_cast<TRootC::GenParticle*>(branch->NewEntry());
     
    119115  int ierr, entryType;
    120116  int istr = 0;
    121   int nevt = 0;
     117  int nevt = 0, nevt_already_processed=0;
    122118
    123119  ExRootTreeWriter *treeWriter = new ExRootTreeWriter(outputFileName, "GEN");
     
    136132                    << left  << setw(20) << inputFileList                    <<""
    137133                    << right << setw(19) <<"for input **"<<""<<endl;
    138 
    139134      exit(1);
    140135    }
     136
     137  // Parsing the input list
    141138  while(1)
    142139    {
    143140      infile >> filename;
    144       if(!infile.good()) break;
    145         ifstream checking_the_file(filename.c_str());
    146         if(!checking_the_file.good())
    147            {
     141      if(!infile.good()) break; // end of the list
     142      if (Nevt>0 && nevt_already_processed >=Nevt) break; // enough events already processed
     143
     144      ifstream checking_the_file(filename.c_str());
     145      if(!checking_the_file.good()) {
    148146             cerr << left  << setw(30) <<"**   ERROR: Can't find file  "<<""
    149147                  << left  << setw(20) << filename                      <<""
    150148                  << right << setw(19) <<"for input **"<<""<<endl;
    151149             continue;
    152            }
    153         else checking_the_file.close();
     150       } else checking_the_file.close();
    154151     
    155152      ierr = StdHepXdrReadInit(const_cast<char*>(filename.c_str()), &nevt, istr);
    156      
    157       if(ierr != 0)
    158         {
     153
     154      if(ierr != 0) {
    159155          cerr <<"**                ERROR: Can't open file for input                 **"<<endl;
    160156          break;
    161         }
     157      }
     158
    162159
    163160      Long64_t allEntries = (Nevt<0)?nevt:min(nevt,Nevt+1); // do not miss the "+1"
     
    170167            {
    171168              ierr = StdHepXdrRead(&entryType, istr);
     169              if (Nevt>0 && nevt_already_processed >=Nevt) break; // enough events already processed
    172170             
    173               if(ierr != 0)
    174                 {
     171              if(ierr != 0) {
    175172                  cerr << left  << setw(49) <<"**   ERROR: Unexpected end of file after"<<""
    176173                       << left  << setw(10) << entry                                    <<""
    177174                       << right << setw(10) <<"entries **"<<""<<endl;
    178175                  break;
    179                 }
     176              } // if error
    180177             
    181178              // analyse only entries with standard HEPEVT common block
    182               if(entryType == 1)
    183                 {
     179              if(entryType == 1) {
    184180                  // add empty events for missing event numbers
    185                   while(recordNumber < myhepevt.nevhep)
    186                     {
     181                  while(recordNumber < myhepevt.nevhep) {
    187182                      treeWriter->Clear();
    188183                      AnalyseEvent(branchGenEvent, recordNumber);
    189184                      treeWriter->Fill();
    190185                      ++recordNumber;
    191                     }
     186                      ++nevt_already_processed;
     187                  } // while
    192188                 
    193189                  treeWriter->Clear();
    194                  
    195190                  AnalyseEvent(branchGenEvent, myhepevt.nevhep);
    196191                  AnalyseParticles(branchGenParticle);
    197                  
    198192                  treeWriter->Fill();
    199                  
    200193                  ++recordNumber;
    201                  
    202                 }
    203             }
    204         }
     194                  ++nevt_already_processed;
     195                } // if
     196            } // for
     197        } // if allEntries >0
    205198      StdHepXdrEnd(istr);
    206     }
     199    } // while inputlist not empty
    207200  treeWriter->Write();
    208201 
Note: See TracChangeset for help on using the changeset viewer.