/* ======================================================================== *\ ! ! * ! * This file is part of MARS, the MAGIC Analysis and Reconstruction ! * Software. It is distributed to you in the hope that it can be a useful ! * and timesaving tool in analysing Data of imaging Cerenkov telescopes. ! * It is distributed WITHOUT ANY WARRANTY. ! * ! * Permission to use, copy, modify and distribute this software and its ! * documentation for any purpose is hereby granted without fee, ! * provided that the above copyright notice appear in all copies and ! * that both that copyright notice and this permission notice appear ! * in supporting documentation. It is provided "as is" without express ! * or implied warranty. ! * ! ! ! Author(s): Thomas Bretz 12/2000 ! Author(s): Harald Kornmayer 1/2001 ! ! Copyright: MAGIC Software Development, 2000-2004 ! ! \* ======================================================================== */ ///////////////////////////////////////////////////////////////////////////// // // MCerPhotPix // // Storage container for the signal in a pixel in number of photons. // // NOTE: This container is NOT ment for I/O. Write it to a file on your // own risk! // // fIsSaturated: boolean variable set to kTRUE whenever one or more of // the low gain FADC slices of the pixel is in saturation. // // Version 2: // ---------- // - added fIsSaturated // // Version 4: // ---------- // - added fIsHGSaturated // // Version 5: // ---------- // - added fIdxIsland // // Version 6: // ---------- // - put the '!' into the comment line for // Bool_t fIsCore; //! the pixel is a Core pixel -> kTRUE // Short_t fRing; //! NT: number of analyzed rings around the core pixels, fRing>0 means: used, fRing= 0 means: unused, fRing= -1 means: unmapped (no possible to use in the calculation of the image parameters) // Short_t fIdxIsland; //! the pixel is a Core pixel -> kTRUE // Bool_t fIsHGSaturated; //! the pixel's high gain is saturated // This is a queick hack to gain storage space - the structure of // the container for calibrated data will change soon. // //////////////////////////////////////////////////////////////////////////// #include "MCerPhotPix.h" #include "MLog.h" ClassImp(MCerPhotPix); using namespace std; // -------------------------------------------------------------------------- // // Default constructor. The pixel is assumed as used and not a core pixel. // NT 29/04/2003: A pixel is considered used when fRing > 0. // MCerPhotPix::MCerPhotPix(Int_t pix, Float_t phot, Float_t errphot) : fPixId(pix), fIsCore(kFALSE), fRing(1), fIdxIsland(-1), fPhot(phot), fErrPhot(errphot), fIsSaturated(kFALSE), fIsHGSaturated(kFALSE) { MMath::ReducePrecision(fPhot); MMath::ReducePrecision(fErrPhot); } // -------------------------------------------------------------------------- // // From TObject: // Compare abstract method. Must be overridden if a class wants to be able // to compare itself with other objects. Must return -1 if this is smaller // than obj, 0 if objects are equal and 1 if this is larger than obj. // // Here: // Index numbers are compared --> This allows sorting by index // Int_t MCerPhotPix::Compare(const TObject *o) const { const Int_t diff = fPixId - static_cast(o)->fPixId; return diff==0 ? 0 : TMath::Sign(1, diff); } // -------------------------------------------------------------------------- // // Print information to gLog. // void MCerPhotPix::Print(Option_t *) const { gLog << GetDescriptor() <<" Pixel: "<< fPixId; gLog << (fRing>0?" Used ":" Unused "); gLog << (fIsCore?" Core ":" "); gLog << (fIsSaturated?" ":"not") << " saturated "; gLog << "High gain " << (fIsHGSaturated?" ":"not") << " saturated "; gLog << "Nphot= " << fPhot << " Error(Nphot)=" << fErrPhot << endl; }