Changeset 9942 for trunk/Mars


Ignore:
Timestamp:
09/24/10 15:36:45 (14 years ago)
Author:
tbretz
Message:
Implemented reading of a single telescope from an eventio file.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Mars/msim/MPhotonEvent.cc

    r9937 r9942  
    452452{
    453453    const UInt_t n = GetNumPhotons();
     454    if (n==0)
     455        return 0;
    454456
    455457    Double_t mean = 0;
     
    463465{
    464466    const UInt_t n = GetNumPhotons();
     467    if (n==0)
     468        return 0;
    465469
    466470    Double_t mean = 0;
     
    471475}
    472476
     477Double_t MPhotonEvent::GetMeanT() const
     478{
     479    const UInt_t n = GetNumPhotons();
     480    if (n==0)
     481        return 0;
     482
     483    Double_t mean = 0;
     484    for (UInt_t i=0; i<n; i++)
     485        mean += operator[](i).GetTime();
     486
     487    return mean / n;
     488}
     489
     490void MPhotonEvent::AddXY(Double_t x, Double_t y)
     491{
     492    const UInt_t n = GetNumPhotons();
     493
     494    for (UInt_t i=0; i<n; i++)
     495    {
     496        MPhotonData &p = operator[](i);
     497        p.SetPosition(p.GetPosX()+x, p.GetPosY()+y);
     498    }
     499}
     500
     501void MPhotonEvent::SimWavelength(Float_t wmin, Float_t wmax)
     502{
     503    const UInt_t n = GetNumPhotons();
     504
     505    for (UInt_t i=0; i<n; i++)
     506        operator[](i).SimWavelength(wmin, wmax);
     507}
     508
    473509// --------------------------------------------------------------------------
    474510//
    475511// Read the Event section from the file
    476512//
    477 Int_t MPhotonEvent::ReadCorsikaEvt(MCorsikaFormat *fInFormat, Int_t i)
     513Int_t MPhotonEvent::ReadCorsikaEvt(MCorsikaFormat *fInFormat, Int_t id)
    478514{
    479515    Int_t n = 0;
     
    505541    // 1.06GB/ 3s   CPU
    506542    // 1.06GB/22s   REAL
    507     Bool_t readError = kFALSE;
    508     Float_t * buffer;
    509 
    510     if ( fInFormat->IsEventioFormat() )
     543    Float_t *buffer = 0;
     544
     545    if (fInFormat->IsEventioFormat())
     546    {
     547        while (1)
    511548        {
    512         while (fInFormat->GetNextEvent(&buffer, readError))
    513             {
    514 
    515             const Int_t rc = Add(n).FillEventIO(buffer);
    516             switch (rc)
     549            const Int_t rc = fInFormat->GetNextEvent(&buffer, id);
     550            if (rc==kERROR)
     551                return kERROR;
     552            if (rc==kFALSE)
     553                break;
     554
     555            // Loop over number of photons in bunch
     556            while (Add(n).FillEventIO(buffer))
     557                n++;
     558        }
     559    }
     560    else
     561    {
     562        while (1)
     563        {
     564            const Int_t rc1 = fInFormat->GetNextEvent(&buffer);
     565            if (rc1==kERROR)
     566                return kERROR;
     567            if (rc1==kFALSE)
     568                break;
     569
     570            const Int_t rc2 = Add(n).FillCorsika(buffer, id);
     571            switch (rc2)
    517572            {
    518573            case kCONTINUE:  continue;        // No data in this bunch... skip it.
     
    524579            // Increase the counter by one
    525580            n++;
    526             }
    527581        }
    528     else
    529         {
    530         while (fInFormat->GetNextEvent(&buffer, readError))
    531             {
    532 
    533             const Int_t rc = Add(n).FillCorsika(buffer, i);
    534             switch (rc)
    535             {
    536             case kCONTINUE:  continue;        // No data in this bunch... skip it.
    537             case kERROR:     return kERROR;   // Error occured
    538             //case kFALSE:     return kFALSE;   // End of stream
    539             }
    540 
    541             // This is a photon we would like to keep later.
    542             // Increase the counter by one
    543             n++;
    544             }
    545         }
    546      if (readError)      return kFALSE;
     582    }
    547583
    548584/*
Note: See TracChangeset for help on using the changeset viewer.