/* ======================================================================== *\ ! ! * ! * 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 (tbretz@uni-sw.gwdg.de) ! ! Copyright: MAGIC Software Development, 2000-2001 ! ! \* ======================================================================== */ /////////////////////////////////////////////////////////////////////// // // MHStarMap // // This class contains a 2-dimensional histogram. It should show some // kind of star map. The algorith which calculates the star map // from the Hillas parameters (Fill) can be enhanced. // /////////////////////////////////////////////////////////////////////// #include "MHStarMap.h" #include // TH2F #include // gStyle #include // SetRGB #include // TCanvas #include "MHillas.h" ClassImp(MHStarMap) MHStarMap::MHStarMap (const char *name, const char *title) { // // default constructor // creates an a list of histograms for all pixels and both gain channels // // // set the name and title of this object // *fName = name ? name : "MHStarMap" ; *fTitle = title ? title : "Container for a Star Map" ; // // loop over all Pixels and create two histograms // one for the Low and one for the High gain // connect all the histogram with the container fHist // fStarMap = new TH2F("Star Map", "Counts", 150, -300, 300, 150, -300, 300); } MHStarMap::~MHStarMap() { delete fStarMap; } void MHStarMap::Draw(Option_t *) { // // Creates a new canvas, creates a useful palette and // draws the histogram in the new created canvas // TCanvas *c = new TCanvas("Star Map", "Star Map created from Hillas Parameters", 500, 500); // // Set the palette you wanna use: // - you could set the root "Pretty Palette Violet->Red" by // gStyle->SetPalette(1, 0), but in some cases this may look // confusing // - The maximum colors root allowes us to set by ourself // is 50 (idx: 51-100). This colors are set to a grayscaled // palette // - the number of contours must be two less than the number // of palette entries // const Int_t numg = 32; // number of gray scaled colors const Int_t numw = 32; // number of white Int_t palette[numg+numw]; // // The first half of the colors are white. // This is some kind of optical background supression // gROOT->GetColor(51)->SetRGB(1, 1, 1); Int_t i; for (i=0; iGetColor(52+i)->SetRGB(gray, gray, gray); palette[i] = 52+i; } // // Set the palette and the number of contour levels // gStyle->SetPalette(numg+numw, palette); fStarMap->SetContour(numg+numw-2); // gStyle->SetPalette(1, 0); fStarMap->Draw("colz"); c->Modified(); c->Update(); } void MHStarMap::Fill(MHillas *par) { const float dist = par->GetDist(); const float theta = par->GetTheta(); const float alpha = par->GetAlpha()/kRad2Deg; const float m = tan(theta+alpha-kPI); const float t = dist*(sin(theta)-cos(theta)*m); if (m>-1 && m<1) for (int x=-298; x<298; x+=4) { const float y = m*x+t; fStarMap->Fill(x, y); } else for (int y=-298; y<298; y+=4) { const float x = (y-t)/m; fStarMap->Fill(x, y); } }