| 7 | // | // | 
| 8 | // default position used only in CaloStrip for the moment | // default position used only in CaloStrip for the moment | 
| 9 | // | // | 
|  | #define CTX 121.1 |  | 
|  | #define CTY 122.6 |  | 
|  | #define CTZ -263.1 |  | 
| 10 | // | // | 
| 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 |  | //#define CTZ -263.1 | 
| 22 |  | // | 
| 23 |  | // new param using em showers (E. Taddei paramters) | 
| 24 |  | // | 
| 25 |  | //#define CTX 120.6 | 
| 26 |  | //#define CTY 122.3 | 
| 27 |  | //#define CTZ -263.1 | 
| 28 |  | // | 
| 29 |  | // new param using inclined protons and looking for Z alignment | 
| 30 |  | // | 
| 31 |  | #define CTX 120.6 | 
| 32 |  | #define CTY 122.3 | 
| 33 |  | #define CTZ -261.596 | 
| 34 |  | // | 
| 35 |  | // Mechanical positions (used with option --use-standard-alig) | 
| 36 |  | // | 
| 37 |  | #define MECHCTX 120.5 | 
| 38 |  | #define MECHCTY 121.5 | 
| 39 |  | #define MECHCTZ -261.81 | 
| 40 |  | // | 
| 41 |  | // just for testing purpose | 
| 42 |  | // | 
| 43 |  | //#define MECHCTX 0. | 
| 44 |  | //#define MECHCTY 0. | 
| 45 |  | //#define MECHCTZ -263.1 | 
| 46 |  | // | 
| 47 |  | #include <sstream> | 
| 48 |  | #include <fstream> | 
| 49 |  | #include <string.h> | 
| 50 | #include <TObject.h> | #include <TObject.h> | 
| 51 |  | #include <TMath.h> | 
| 52 | #include <TClonesArray.h> | #include <TClonesArray.h> | 
| 53 | #include <TArrayI.h> | #include <TArrayI.h> | 
| 54 |  | #include <TSystem.h> | 
| 55 |  | #include <GLTables.h> | 
| 56 | // | // | 
| 57 | extern "C" int millim_(Int_t *, Float_t *); | extern "C" int millim_(Int_t *, Float_t *); | 
| 58 | struct shift { | struct shift { | 
| 84 | // | // | 
| 85 | Float_t GetEstrip(Int_t view, Int_t plane, Int_t strip); ///< returns saved MIP value for the indicated strip. | Float_t GetEstrip(Int_t view, Int_t plane, Int_t strip); ///< returns saved MIP value for the indicated strip. | 
| 86 | 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. | 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. | 
| 87 |  | Float_t DecodeEstrip(Int_t entry, Int_t &view, Int_t &plane, Int_t &strip, Bool_t &saturated); ///< returns saved MIP value for the entry number "entry" of the TArrayI. | 
| 88 | 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.). | 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.). | 
| 89 | 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 ). | 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 ). | 
| 90 |  | Float_t qtotpl(Int_t nplane, Bool_t &saturation); ///< Returns energy released on plane nplane (where 0<= nplane <= 43, 0 = 1Y, 1 = 1X, 2 = 2Y, 3 = 2X, etc. etc.). | 
| 91 |  | Float_t qtotpl(Int_t view, Int_t plane, Bool_t &saturation); ///< Returns energy released on view "view" (0 = X, 1 = Y) and plane "plane" ( 0 <= plane <= 21 ). | 
| 92 | // | // | 
| 93 | void Clear(); | void Clear(Option_t *t=""); | 
| 94 | // | // | 
| 95 | Float_t GetXalig(){return CTX;}; ///< return X alignement paramenter | Float_t GetXalig(){printf(" Obsolete! Use CaloStrip class instead\n");return CTX;}; ///< return X alignement paramenter | 
| 96 | Float_t GetYalig(){return CTY;}; ///< return Y alignement paramenter | Float_t GetYalig(){printf(" Obsolete! Use CaloStrip class instead\n");return CTY;}; ///< return Y alignement paramenter | 
| 97 | Float_t GetZalig(){return CTZ;}; ///< return Z alignement paramenter | Float_t GetZalig(){printf(" Obsolete! Use CaloStrip class instead\n");return CTZ;}; ///< return Z alignement paramenter | 
| 98 | // | // | 
| 99 | CaloLevel1(); ///< Constructor. | CaloLevel1(); ///< Constructor. | 
| 100 | // | // | 
| 108 | class CaloStrip : public TObject { | class CaloStrip : public TObject { | 
| 109 |  |  | 
| 110 | private: | private: | 
| 111 | CaloLevel1 *c1; | CaloLevel1 *c1; //< pointer to level1 object | 
| 112 | Float_t fE; | Float_t fE; //< energy in mip of the strip | 
| 113 | Float_t fX; | Float_t fX; //< X position in cm of the strip | 
| 114 | Float_t fY; | Float_t fY; //< Y position in cm of the strip | 
| 115 | Float_t fZ; | Float_t fZ; //< Z position in cm of the strip | 
| 116 | Int_t fView; | Int_t fView; ///< view [1-2] | 
| 117 | Int_t fPlane; | Int_t fPlane; ///< plane [1-22] | 
| 118 | Int_t fStrip; | Int_t fStrip; ///< strip [1-96] | 
| 119 |  | Bool_t ismech; ///< true = using mechanical alignement, false using experimental alignement parameters | 
| 120 |  | static Float_t UXal; ///< used X alignement parameter | 
| 121 |  | static Float_t UYal; ///< used Y alignement parameter | 
| 122 |  | static Float_t UZal; ///< used Z alignement parameter | 
| 123 |  | static Bool_t paramload; | 
| 124 |  | // | 
| 125 |  |  | 
| 126 | public: | public: | 
| 127 | // | // | 
| 128 | // METHODS | // METHODS | 
| 129 | // | // | 
|  | // |  | 
| 130 | CaloStrip(); ///< Default Constructor. | CaloStrip(); ///< Default Constructor. | 
| 131 | // | // | 
| 132 |  | CaloStrip(Bool_t usemechanicalalignement); ///< Default Constructor. | 
| 133 |  | // | 
| 134 | CaloStrip(CaloLevel1 *c1); ///< Constructor. | CaloStrip(CaloLevel1 *c1); ///< Constructor. | 
| 135 | // | // | 
| 136 | Float_t GetE(){return fE;}; | CaloStrip(CaloLevel1 *c1, Bool_t usemechanicalalignement); ///< Constructor. | 
| 137 |  | // | 
| 138 |  | Float_t GetE(){return fE;}; ///< Get energy in MIP for setted strip | 
| 139 |  | // | 
| 140 |  | Float_t GetX(){return fX;}; ///< Get X strip position | 
| 141 |  | Float_t GetY(){return fY;}; ///< Get Y strip position | 
| 142 |  | Float_t GetZ(){return fZ;}; /// Get Z strip position | 
| 143 |  | // | 
| 144 |  | Float_t GetXalig(){ return UXal;}; ///< return X alignement paramenter | 
| 145 |  | Float_t GetYalig(){ return UYal;}; ///< return Y alignement paramenter | 
| 146 |  | Float_t GetZalig(){ return UZal;}; ///< return Z alignement paramenter | 
| 147 |  | // | 
| 148 |  | Int_t GetView(){return (fView-1);}; ///< Get strip view [0-1] | 
| 149 |  | Int_t GetPlane(){return (fPlane-1);}; ///< Get strip plane [0-21] | 
| 150 |  | Int_t GetStrip(){return (fStrip-1);}; ///< Get strip number [0-95] | 
| 151 |  | // | 
| 152 |  | Int_t GetSiSensor(); ///< Return the sensor number, -1 means dead area | 
| 153 | // | // | 
| 154 | Float_t GetX(){return fX;}; | void Set(Int_t view, Int_t plane, Int_t strip); ///< Set strip giving view [0-1], plane [0-22] and number [0-95] | 
|  | Float_t GetY(){return fY;}; |  | 
|  | Float_t GetZ(){return fZ;}; |  | 
| 155 | // | // | 
| 156 | Int_t GetView(){return (fView-1);}; | void Set(Float_t X, Float_t Y, Float_t Z); ///< Set strip giving position in PAMELA ref sys [cm] | 
|  | Int_t GetPlane(){return (fPlane-1);}; |  | 
|  | Int_t GetStrip(){return (fStrip-1);}; |  | 
| 157 | // | // | 
| 158 | void Set(Int_t view, Int_t plane, Int_t strip); | void UseMechanicalAlig(){ ismech = true; UXal = MECHCTX; UYal = MECHCTY; UZal = MECHCTZ;}; ///< Tells CaloStrip to use mechanical alignement parameters | 
| 159 | void Set(Float_t X, Float_t Y, Float_t Z); | void UseStandardAlig(); ///< Tells CaloStrip to use default parameters it will find querying the DB. If connection fails uses parameters hard-coded in this file | 
| 160 |  | void SetAlig(Float_t XALIG, Float_t YALIG, Float_t ZALIG){ ismech = false; UXal = XALIG; UYal = YALIG; UZal = ZALIG;};///< User defined alignement parameters | 
| 161 |  | Bool_t IsMechanicalAlig(){return ismech;}; ///< True is using mechanical alignement parameters, false otherwise | 
| 162 | // | // | 
| 163 | void Clear(); ///< clear variables | void Clear(Option_t *t=""); ///< clear variables | 
| 164 | // | // | 
| 165 | CaloStrip* GetCaloStrip(){return this;}; ///< returns pointer to this object | CaloStrip* GetCaloStrip(){return this;}; ///< returns pointer to this object | 
| 166 | // | // | 
| 167 | ClassDef(CaloStrip,1); | ClassDef(CaloStrip,2); | 
| 168 | // | // | 
| 169 | }; | }; | 
| 170 |  |  |