/* ======================================================================== *\ ! ! * ! * 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/2003 ! ! Copyright: MAGIC Software Development, 2000-2003 ! ! \* ======================================================================== */ ///////////////////////////////////////////////////////////////////////////// // // MPedPhotCam // // Hold the Pedestal information for all pixels in the camera (in usints // of photons) // ///////////////////////////////////////////////////////////////////////////// #include "MPedPhotCam.h" #include "MPedPhotPix.h" #include #include "MLog.h" #include "MLogManip.h" #include "MGeomCam.h" ClassImp(MPedPhotCam); using namespace std; // -------------------------------------------------------------------------- // // Default constructor. Creates a MPedPhotPix object for each pixel // MPedPhotCam::MPedPhotCam(const char *name, const char *title) { fName = name ? name : "MPedPhotCam"; fTitle = title ? title : "Storage container for all Pedestal Information in the camera (in units of photons)"; fArray = new TClonesArray("MPedPhotPix", 1); // for (int i=0; i<577; i++) // new ((*fArray)[i]) MPedPhotPix; } // -------------------------------------------------------------------------- // // Delete the array conatining the pixel pedest information // MPedPhotCam::~MPedPhotCam() { delete fArray; } // -------------------------------------------------------------------------- // // Set the size of the camera // void MPedPhotCam::InitSize(const UInt_t i) { fArray->ExpandCreate(i); } // -------------------------------------------------------------------------- // // Get the size of the MPedPhotCam // Int_t MPedPhotCam::GetSize() const { return fArray->GetEntriesFast(); } // -------------------------------------------------------------------------- // // Get i-th pixel (pixel number) // MPedPhotPix &MPedPhotCam::operator[](Int_t i) { return *static_cast(fArray->UncheckedAt(i)); } // -------------------------------------------------------------------------- // // Get i-th pixel (pixel number) // MPedPhotPix &MPedPhotCam::operator[](Int_t i) const { return *static_cast(fArray->UncheckedAt(i)); } /* // -------------------------------------------------------------------------- // // Check if position i is inside bounds // Bool_t MPedPhotCam::CheckBounds(Int_t i) { return i < fArray->GetEntriesFast(); } */ void MPedPhotCam::Clear(Option_t *o) { fArray->ForEach(TObject, Clear)(); } void MPedPhotCam::Print(Option_t *o) const { *fLog << all << GetDescriptor() << ":" << endl; int id = 0; TIter Next(fArray); MPedPhotPix *pix; while ((pix=(MPedPhotPix*)Next())) { id++; if (!pix->IsValid()) continue; *fLog << id-1 << ": "; *fLog << pix->GetMean() << " " << pix->GetRms() << endl; } } /* Float_t MPedPhotCam::GetPedestalMin(const MGeomCam *geom) const { if (fArray->GetEntries() <= 0) return 50.; Float_t minval = (*this)[0].GetPedestalRms(); for (Int_t i=1; iGetEntries(); i++) { const MPedPhotPix &pix = (*this)[i]; Float_t testval = pix.GetPedestalRms(); if (geom) testval *= geom->GetPixRatio(i); if (testval < minval) minval = testval; } return minval; } Float_t MPedPhotCam::GetPedestalMax(const MGeomCam *geom) const { if (fArray->GetEntries() <= 0) return 50.; Float_t maxval = (*this)[0].GetPedestalRms(); for (Int_t i=1; iGetEntries(); i++) { const MPedPhotPix &pix = (*this)[i]; Float_t testval = pix.GetPedestalRms(); if (geom) testval *= geom->GetPixRatio(i); if (testval > maxval) maxval = testval; } return maxval; } */ Bool_t MPedPhotCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const { switch (type) { case 0: val = (*this)[idx].GetMean(); break; case 1: val = (*this)[idx].GetRms(); break; default: return kFALSE; } return val>=0; } void MPedPhotCam::DrawPixelContent(Int_t num) const { *fLog << warn << "MPedPhotCam::DrawPixelContent - not available." << endl; }