source: trunk/MagicSoft/Mars/mimage/MHillasSrc.cc@ 2100

Last change on this file since 2100 was 2026, checked in by tbretz, 22 years ago
*** empty log message ***
File size: 4.9 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Thomas Bretz 12/2000 <mailto:tbretz@uni-sw.gwdg.de>
19! Author(s): Harald Kornmayer 1/2001
20! Author(s): Rudolf Bock 10/2001 <mailto:Rudolf.Bock@cern.ch>
21! Author(s): Wolfgang Wittek 06/2002 <mailto:wittek@mppmu.mpg.de>
22!
23! Copyright: MAGIC Software Development, 2000-2002
24!
25!
26\* ======================================================================== */
27
28/////////////////////////////////////////////////////////////////////////////
29//
30// MHillasSrc
31//
32// Storage Container for image parameters
33//
34// source-dependent image parameters
35//
36//
37// Version 1:
38// ----------
39// fAlpha angle between major axis and line source-to-center
40// fDist distance from source to center of ellipse
41//
42//
43// Version 2:
44// ----------
45// fHeadTail added
46//
47//
48// Version 3:
49// ----------
50// fCosDeltaAlpha cosine of angle between d and a, where
51// - d is the vector from the source position to the
52// center of the ellipse
53// - a is a vector along the main axis of the ellipse,
54// defined with positive x-component
55//
56//
57// Version 4:
58// ----------
59//
60// fHeadTail removed
61//
62/////////////////////////////////////////////////////////////////////////////
63#include "MHillasSrc.h"
64
65#include <fstream.h>
66#include <TArrayF.h>
67
68#include "MLog.h"
69#include "MLogManip.h"
70
71#include "MSrcPosCam.h"
72
73ClassImp(MHillasSrc);
74
75// --------------------------------------------------------------------------
76//
77// Default constructor.
78//
79MHillasSrc::MHillasSrc(const char *name, const char *title)
80{
81 fName = name ? name : "MHillasSrc";
82 fTitle = title ? title : "Parameters depending in source position";
83}
84
85void MHillasSrc::Reset()
86{
87 fDist = -1;
88 fAlpha = 0;
89 fCosDeltaAlpha = 0;
90}
91
92// --------------------------------------------------------------------------
93//
94// Calculation of source-dependent parameters
95// In case you don't call Calc from within an eventloop make sure, that
96// you call the Reset member function before.
97//
98Bool_t MHillasSrc::Calc(const MHillas *hillas)
99{
100 const Double_t mx = hillas->GetMeanX(); // [mm]
101 const Double_t my = hillas->GetMeanY(); // [mm]
102
103 const Double_t sx = mx - fSrcPos->GetX(); // [mm]
104 const Double_t sy = my - fSrcPos->GetY(); // [mm]
105
106 const Double_t sd = hillas->GetSinDelta(); // [1]
107 const Double_t cd = hillas->GetCosDelta(); // [1]
108
109 //
110 // Distance from source position to center of ellipse.
111 // If the distance is 0 distance, Alpha is not specified.
112 // The calculation has failed and returnes kFALSE.
113 //
114 const Double_t dist = sqrt(sx*sx + sy*sy); // [mm]
115 if (dist==0)
116 return kFALSE;
117
118 //
119 // Calculate Alpha and Cosda = cos(d,a)
120 // The sign of Cosda will be used for quantities containing
121 // a head-tail information
122 //
123 // *OLD* const Double_t arg = (sy-tand*sx) / (dist*sqrt(tand*tand+1));
124 // *OLD* fAlpha = asin(arg)*kRad2Deg;
125
126 const Double_t arg1 = cd*sy-sd*sx; // [mm]
127 const Double_t arg2 = cd*sx+sd*sy; // [mm]
128
129 fAlpha = asin(arg1/dist)*kRad2Deg; // [deg]
130 fCosDeltaAlpha = arg2/dist; // [1]
131 fDist = dist; // [mm]
132
133 SetReadyToSave();
134
135 return kTRUE;
136}
137
138void MHillasSrc::Print(Option_t *) const
139{
140 *fLog << all;
141 *fLog << "Source dependant Image Parameters (" << GetName() << ")" << endl;
142 *fLog << " - Dist [mm] = " << fDist << endl;
143 *fLog << " - Alpha [deg] = " << fAlpha << endl;
144 *fLog << " - CosDeltaAlpha = " << fCosDeltaAlpha << endl;
145}
146// --------------------------------------------------------------------------
147//
148// This function is ment for special usage, please never try to set
149// values via this function
150//
151void MHillasSrc::Set(const TArrayF &arr)
152{
153 if (arr.GetSize() != 3)
154 return;
155
156 fAlpha = arr.At(0); // [deg] angle of major axis with vector to src
157 fDist = arr.At(1); // [mm] distance between src and center of ellipse
158 fCosDeltaAlpha = arr.At(2); // [1] cosine of angle between d and a
159}
Note: See TracBrowser for help on using the repository browser.