/[PAMELA software]/DarthVader/CalorimeterLevel2/inc/CaloLevel1.h
ViewVC logotype

Annotation of /DarthVader/CalorimeterLevel2/inc/CaloLevel1.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations) (download)
Mon Mar 26 14:02:03 2007 UTC (17 years, 8 months ago) by mocchiut
Branch: MAIN
Changes since 1.3: +62 -21 lines
File MIME type: text/plain
Bug in CaloStrip/Level0 fixed + new alignement parameters added

1 mocchiut 1.1 /**
2     * \file inc/CaloLevel1.h
3     * \author Emiliano Mocchiutti
4     */
5     #ifndef CaloLevel1_h
6     #define CaloLevel1_h
7     //
8     // default position used only in CaloStrip for the moment
9     //
10 mocchiut 1.4 //
11     // old param
12     //
13     //#define CTX 121.1
14     //#define CTY 122.6
15     //#define CTZ -263.1
16     //
17     // new param
18     //
19     #define CTX 121.2
20     #define CTY 122.9
21 mocchiut 1.1 #define CTZ -263.1
22     //
23 mocchiut 1.4 // Mechanical positions (used with option --use-standard-alig)
24     //
25     #define MECHCTX 121.
26     #define MECHCTY 122.
27     #define MECHCTZ -261.81
28     //
29     // just for testing purpose
30     //
31     //#define MECHCTX 0.
32     //#define MECHCTY 0.
33     //#define MECHCTZ -263.1
34     //
35     #include <sstream>
36     #include <fstream>
37     #include <string.h>
38 mocchiut 1.1 #include <TObject.h>
39 mocchiut 1.4 #include <TMath.h>
40 mocchiut 1.1 #include <TClonesArray.h>
41     #include <TArrayI.h>
42 mocchiut 1.4 #include <TSystem.h>
43     #include <GLTables.h>
44 mocchiut 1.1 //
45     extern "C" int millim_(Int_t *, Float_t *);
46     struct shift {
47     Float_t shift;
48     };
49     //
50    
51     /**
52     * \brief Calorimeter level1 class
53     *
54     * This class contains level1 calorimeter variables
55     *
56     **/
57     class CaloLevel1 : public TObject {
58    
59     private:
60    
61     public:
62     //
63     Int_t istrip; ///< total number of strip hit
64     //
65     // Number of strip with energy > emip and their value coded with view plane and strip number:
66     // view x[y] plane PP strip SS with energy mmmm.iip = +[-] ( PP*10^6 + SS*10^4 + mmmm.iip )
67     //
68     TArrayI estrip; ///< MIP values for each strip with energy > emin coded with view plane and strip number. NOTICE: precision is limited to the 5 most significative ciphers
69     //
70     CaloLevel1* GetCaloLevel1(){return this;}; ///< returns pointer to this object
71     //
72     //
73     Float_t GetEstrip(Int_t view, Int_t plane, Int_t strip); ///< returns saved MIP value for the indicated strip.
74     Float_t DecodeEstrip(Int_t entry, Int_t &view, Int_t &plane, Int_t &strip); ///< returns saved MIP value for the entry number "entry" of the TArrayI.
75 mocchiut 1.2 Float_t qtotpl(Int_t nplane); ///< Returns energy released on plane nplane (where 0<= nplane <= 43, 0 = 1Y, 1 = 1X, 2 = 2Y, 3 = 2X, etc. etc.).
76     Float_t qtotpl(Int_t view, Int_t plane); ///< Returns energy released on view "view" (0 = X, 1 = Y) and plane "plane" ( 0 <= plane <= 21 ).
77 mocchiut 1.1 //
78     void Clear();
79     //
80 mocchiut 1.3 Float_t GetXalig(){return CTX;}; ///< return X alignement paramenter
81     Float_t GetYalig(){return CTY;}; ///< return Y alignement paramenter
82     Float_t GetZalig(){return CTZ;}; ///< return Z alignement paramenter
83     //
84 mocchiut 1.1 CaloLevel1(); ///< Constructor.
85     //
86     ClassDef(CaloLevel1,1);
87     };
88    
89     /**
90     * \brief Calorimeter strip class, needed to perform operation on a strip level, for example to retrieve the position of the strips or to retrieve the closest strip to a cerain position
91     *
92     */
93     class CaloStrip : public TObject {
94    
95     private:
96 mocchiut 1.4 CaloLevel1 *c1; //< pointer to level1 object
97     Float_t fE; //< energy in mip of the strip
98     Float_t fX; //< X position in cm of the strip
99     Float_t fY; //< Y position in cm of the strip
100     Float_t fZ; //< Z position in cm of the strip
101     Int_t fView; ///< view [1-2]
102     Int_t fPlane; ///< plane [1-22]
103     Int_t fStrip; ///< strip [1-96]
104     Bool_t ismech; ///< true = using mechanical alignement, false using experimental alignement parameters
105     Float_t UXal; ///< used X alignement parameter
106     Float_t UYal; ///< used Y alignement parameter
107     Float_t UZal; ///< used Z alignement parameter
108 mocchiut 1.1
109     public:
110     //
111     // METHODS
112     //
113     //
114     CaloStrip(); ///< Default Constructor.
115     //
116     CaloStrip(CaloLevel1 *c1); ///< Constructor.
117     //
118 mocchiut 1.4 Float_t GetE(){return fE;}; ///< Get energy in MIP for setted strip
119     //
120     Float_t GetX(){return fX;}; ///< Get X strip position
121     Float_t GetY(){return fY;}; ///< Get Y strip position
122     Float_t GetZ(){return fZ;}; /// Get Z strip position
123     //
124     Float_t GetXalig(){ return UXal;}; ///< return X alignement paramenter
125     Float_t GetYalig(){ return UYal;}; ///< return Y alignement paramenter
126     Float_t GetZalig(){ return UZal;}; ///< return Z alignement paramenter
127     //
128     Int_t GetView(){printf(" Obsolete! Use CaloStrip class instead\n"); return (fView-1);}; ///< Get strip view [0-1]
129     Int_t GetPlane(){printf(" Obsolete! Use CaloStrip class instead\n");return (fPlane-1);}; ///< Get strip plane [0-22]
130     Int_t GetStrip(){printf(" Obsolete! Use CaloStrip class instead\n");return (fStrip-1);}; ///< Get strip number [0-95]
131     //
132     void Set(Int_t view, Int_t plane, Int_t strip); ///< Set strip giving view [0-1], plane [0-22] and number [0-95]
133 mocchiut 1.1 //
134 mocchiut 1.4 void Set(Float_t X, Float_t Y, Float_t Z); ///< Set strip giving position in PAMELA ref sys [cm]
135 mocchiut 1.1 //
136 mocchiut 1.4 void UseMechanicalAlig(){ ismech = true; UXal = MECHCTX; UYal = MECHCTY; UZal = MECHCTZ;}; ///< Tells CaloStrip to use mechanical alignement parameters
137     void UseStandardAlig(); ///< Tells CaloStrip to use default parameters it will find querying the DB. If connection fails uses parameters hard-coded in this file
138     void SetAlig(Float_t XALIG, Float_t YALIG, Float_t ZALIG){ ismech = false; UXal = XALIG; UYal = YALIG; UZal = ZALIG;};///< User defined alignement parameters
139     Bool_t IsMechanicalAlig(){return ismech;}; ///< True is using mechanical alignement parameters, false otherwise
140 mocchiut 1.1 //
141     void Clear(); ///< clear variables
142     //
143     CaloStrip* GetCaloStrip(){return this;}; ///< returns pointer to this object
144     //
145 mocchiut 1.4 ClassDef(CaloStrip,2);
146 mocchiut 1.1 //
147     };
148    
149     #endif

  ViewVC Help
Powered by ViewVC 1.1.23