Changeset 19340


Ignore:
Timestamp:
Oct 30, 2018, 5:54:59 PM (10 months ago)
Author:
tbretz
Message:
Implemented variable block size to support thin-format and implemented that even for normal data the wavelength is created if not yet done automatically.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Mars/mcorsika/MCorsikaRead.cc

    r19000 r19340  
    280280               {
    281281               if (blockType == 1200)
    282                   status = fRunHeader->ReadEvt(fInFormat);
     282                  status = fRunHeader->ReadEvt(fInFormat, blockLength / sizeof(Float_t));
    283283
    284284               else if(blockType == 1201)
     
    287287               else if (blockType == 1202)
    288288                  {
    289                   Float_t buffer[272];
    290                   status = fInFormat->Read(buffer, 272 * sizeof(Float_t));
    291                   status = fRunHeader->ReadEventHeader(buffer);
     289                  vector<Float_t> buffer(blockLength / sizeof(Float_t));
     290                  status = fInFormat->Read(buffer.data(), blockLength);
     291                  status = fRunHeader->ReadEventHeader(buffer.data());
    292292                  break;
    293293                  }
     
    495495            {
    496496            case 1200:       // the run header
    497                status = fRunHeader->ReadEvt(fInFormat);
     497               status = fRunHeader->ReadEvt(fInFormat, fBlockLength / sizeof(Float_t));
    498498               fReadState = 1;  // RUNH is read
    499499               break;
     
    504504
    505505            case 1202:  // the event header
    506                Float_t buffer[272];
    507                if (!fInFormat->Read(buffer, 272 * sizeof(Float_t)))
     506               vector<Float_t> buffer(fBlockLength / sizeof(Float_t));
     507               if (!fInFormat->Read(buffer.data(), fBlockLength))
    508508                  return kFALSE;
    509509
    510510               if (fReadState == 1)  // first event after RUN header
    511511                  {
    512                   fRunHeader->ReadEventHeader(buffer);
     512                  fRunHeader->ReadEventHeader(buffer.data());
    513513                  fRunHeader->Print();
    514514                  }
    515515
    516                status = fEvtHeader->ReadEvt(buffer);
     516               status = fEvtHeader->ReadEvt(buffer.data());
    517517               if (fArrayIdx >= (Int_t)fEvtHeader->GetTotReuse())
    518518                  {
     
    597597
    598598            case 1209:  // the event end
    599                status = fEvtHeader->ReadEvtEnd(fInFormat);
     599               status = fEvtHeader->ReadEvtEnd(fInFormat, fBlockLength / sizeof(Float_t));
    600600
    601601               if (fReadState == 10 || fReadState == 2)
     
    640640            case 1109:  // save corsika events
    641641               fEvtHeader->InitXY();
    642                status = fEvent->ReadCorsikaEvt(&fRawEvemtBuffer[0],
    643                                                fRawEvemtBuffer.size() / 7,
     642               status = fEvent->ReadCorsikaEvt(fRawEvemtBuffer,
     643                                               fBlockLength == MCorsikaFormat::kBlockLengthRaw/21 - 4 ? 7 : 8,
    644644                                               fEvtHeader->GetNumReuse()+1);
     645
     646               // Simulate wavelength for all bunches with a wavelength == 0
     647               fEvent->SimWavelength(fRunHeader->GetWavelengthMin(),
     648                                     fRunHeader->GetWavelengthMax());
     649
    645650               fEvtHeader->IncNumReuse();
    646651
Note: See TracChangeset for help on using the changeset viewer.