#include "AliMUONGeometryModuleTransformer.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMpExMap.h"
#include "AliLog.h"
#include <TVirtualMC.h>
#include <TGeoMatrix.h>
#include <TObjArray.h>
#include <TArrayI.h>
#include <Riostream.h>
using std::endl;
ClassImp(AliMUONGeometryModuleTransformer)
const TString& AliMUONGeometryModuleTransformer::GetModuleNamePrefix()
{
static const TString kModuleNamePrefix = "GM";
return kModuleNamePrefix;
}
TString AliMUONGeometryModuleTransformer::GetModuleName(Int_t moduleId)
{
TString moduleName(GetModuleNamePrefix());
moduleName += moduleId;
return moduleName;
}
AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer(Int_t moduleId)
: TObject(),
fModuleId(moduleId),
fModuleName(GetModuleName(moduleId)),
fVolumePath(),
fTransformation(0),
fDetElements(0)
{
fTransformation = new TGeoHMatrix("");
fDetElements = new AliMpExMap;
}
AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer(TRootIOCtor* )
: TObject(),
fModuleId(0),
fModuleName(),
fVolumePath(),
fTransformation(0),
fDetElements(0)
{
}
AliMUONGeometryModuleTransformer::~AliMUONGeometryModuleTransformer()
{
delete fTransformation;
delete fDetElements;
}
void AliMUONGeometryModuleTransformer::Global2Local(Int_t detElemId,
Float_t xg, Float_t yg, Float_t zg,
Float_t& xl, Float_t& yl, Float_t& zl) const
{
AliMUONGeometryDetElement* detElement = GetDetElement(detElemId);
if (!detElement) return;
detElement->Global2Local(xg, yg, zg, xl, yl, zl);
}
void AliMUONGeometryModuleTransformer::Global2Local(Int_t detElemId,
Double_t xg, Double_t yg, Double_t zg,
Double_t& xl, Double_t& yl, Double_t& zl) const
{
AliMUONGeometryDetElement* detElement = GetDetElement(detElemId);
if (!detElement) return;
detElement->Global2Local(xg, yg, zg, xl, yl, zl);
}
void AliMUONGeometryModuleTransformer::Local2Global(Int_t detElemId,
Float_t xl, Float_t yl, Float_t zl,
Float_t& xg, Float_t& yg, Float_t& zg) const
{
AliMUONGeometryDetElement* detElement = GetDetElement(detElemId);
if (!detElement) return;
detElement->Local2Global(xl, yl, zl, xg, yg, zg);
}
void AliMUONGeometryModuleTransformer::Local2Global(Int_t detElemId,
Double_t xl, Double_t yl, Double_t zl,
Double_t& xg, Double_t& yg, Double_t& zg) const
{
AliMUONGeometryDetElement* detElement = GetDetElement(detElemId);
if (!detElement) return;
detElement->Local2Global(xl, yl, zl, xg, yg, zg);
}
void AliMUONGeometryModuleTransformer::SetTransformation(
const TGeoHMatrix& transform)
{
*fTransformation = transform;
}
TString AliMUONGeometryModuleTransformer::GetVolumeName() const
{
std::string volPath = fVolumePath.Data();
std::string::size_type first = volPath.rfind('/')+1;
std::string::size_type last = volPath.rfind('_');
return volPath.substr(first, last-first );
}
TString AliMUONGeometryModuleTransformer::GetMotherVolumeName() const
{
std::string volPath = fVolumePath.Data();
std::string::size_type first = volPath.rfind('/');
if ( first != std::string::npos )
volPath = volPath.substr(0, first);
std::string::size_type next = volPath.rfind('/')+1;
std::string::size_type last = volPath.rfind('_');
return volPath.substr(next, last-next );
}
AliMUONGeometryDetElement*
AliMUONGeometryModuleTransformer::GetDetElement(Int_t detElemId, Bool_t warn) const
{
AliMUONGeometryDetElement* detElement
= (AliMUONGeometryDetElement*) fDetElements->GetValue(detElemId);
if (!detElement) {
if (warn)
AliErrorStream()
<< "Detection element " << detElemId
<< " not found in module " << fModuleId << endl;
return 0;
}
return detElement;
}
AliMUONGeometryModuleTransformer.cxx:1 AliMUONGeometryModuleTransformer.cxx:2 AliMUONGeometryModuleTransformer.cxx:3 AliMUONGeometryModuleTransformer.cxx:4 AliMUONGeometryModuleTransformer.cxx:5 AliMUONGeometryModuleTransformer.cxx:6 AliMUONGeometryModuleTransformer.cxx:7 AliMUONGeometryModuleTransformer.cxx:8 AliMUONGeometryModuleTransformer.cxx:9 AliMUONGeometryModuleTransformer.cxx:10 AliMUONGeometryModuleTransformer.cxx:11 AliMUONGeometryModuleTransformer.cxx:12 AliMUONGeometryModuleTransformer.cxx:13 AliMUONGeometryModuleTransformer.cxx:14 AliMUONGeometryModuleTransformer.cxx:15 AliMUONGeometryModuleTransformer.cxx:16 AliMUONGeometryModuleTransformer.cxx:17 AliMUONGeometryModuleTransformer.cxx:18 AliMUONGeometryModuleTransformer.cxx:19 AliMUONGeometryModuleTransformer.cxx:20 AliMUONGeometryModuleTransformer.cxx:21 AliMUONGeometryModuleTransformer.cxx:22 AliMUONGeometryModuleTransformer.cxx:23 AliMUONGeometryModuleTransformer.cxx:24 AliMUONGeometryModuleTransformer.cxx:25 AliMUONGeometryModuleTransformer.cxx:26 AliMUONGeometryModuleTransformer.cxx:27 AliMUONGeometryModuleTransformer.cxx:28 AliMUONGeometryModuleTransformer.cxx:29 AliMUONGeometryModuleTransformer.cxx:30 AliMUONGeometryModuleTransformer.cxx:31 AliMUONGeometryModuleTransformer.cxx:32 AliMUONGeometryModuleTransformer.cxx:33 AliMUONGeometryModuleTransformer.cxx:34 AliMUONGeometryModuleTransformer.cxx:35 AliMUONGeometryModuleTransformer.cxx:36 AliMUONGeometryModuleTransformer.cxx:37 AliMUONGeometryModuleTransformer.cxx:38 AliMUONGeometryModuleTransformer.cxx:39 AliMUONGeometryModuleTransformer.cxx:40 AliMUONGeometryModuleTransformer.cxx:41 AliMUONGeometryModuleTransformer.cxx:42 AliMUONGeometryModuleTransformer.cxx:43 AliMUONGeometryModuleTransformer.cxx:44 AliMUONGeometryModuleTransformer.cxx:45 AliMUONGeometryModuleTransformer.cxx:46 AliMUONGeometryModuleTransformer.cxx:47 AliMUONGeometryModuleTransformer.cxx:48 AliMUONGeometryModuleTransformer.cxx:49 AliMUONGeometryModuleTransformer.cxx:50 AliMUONGeometryModuleTransformer.cxx:51 AliMUONGeometryModuleTransformer.cxx:52 AliMUONGeometryModuleTransformer.cxx:53 AliMUONGeometryModuleTransformer.cxx:54 AliMUONGeometryModuleTransformer.cxx:55 AliMUONGeometryModuleTransformer.cxx:56 AliMUONGeometryModuleTransformer.cxx:57 AliMUONGeometryModuleTransformer.cxx:58 AliMUONGeometryModuleTransformer.cxx:59 AliMUONGeometryModuleTransformer.cxx:60 AliMUONGeometryModuleTransformer.cxx:61 AliMUONGeometryModuleTransformer.cxx:62 AliMUONGeometryModuleTransformer.cxx:63 AliMUONGeometryModuleTransformer.cxx:64 AliMUONGeometryModuleTransformer.cxx:65 AliMUONGeometryModuleTransformer.cxx:66 AliMUONGeometryModuleTransformer.cxx:67 AliMUONGeometryModuleTransformer.cxx:68 AliMUONGeometryModuleTransformer.cxx:69 AliMUONGeometryModuleTransformer.cxx:70 AliMUONGeometryModuleTransformer.cxx:71 AliMUONGeometryModuleTransformer.cxx:72 AliMUONGeometryModuleTransformer.cxx:73 AliMUONGeometryModuleTransformer.cxx:74 AliMUONGeometryModuleTransformer.cxx:75 AliMUONGeometryModuleTransformer.cxx:76 AliMUONGeometryModuleTransformer.cxx:77 AliMUONGeometryModuleTransformer.cxx:78 AliMUONGeometryModuleTransformer.cxx:79 AliMUONGeometryModuleTransformer.cxx:80 AliMUONGeometryModuleTransformer.cxx:81 AliMUONGeometryModuleTransformer.cxx:82 AliMUONGeometryModuleTransformer.cxx:83 AliMUONGeometryModuleTransformer.cxx:84 AliMUONGeometryModuleTransformer.cxx:85 AliMUONGeometryModuleTransformer.cxx:86 AliMUONGeometryModuleTransformer.cxx:87 AliMUONGeometryModuleTransformer.cxx:88 AliMUONGeometryModuleTransformer.cxx:89 AliMUONGeometryModuleTransformer.cxx:90 AliMUONGeometryModuleTransformer.cxx:91 AliMUONGeometryModuleTransformer.cxx:92 AliMUONGeometryModuleTransformer.cxx:93 AliMUONGeometryModuleTransformer.cxx:94 AliMUONGeometryModuleTransformer.cxx:95 AliMUONGeometryModuleTransformer.cxx:96 AliMUONGeometryModuleTransformer.cxx:97 AliMUONGeometryModuleTransformer.cxx:98 AliMUONGeometryModuleTransformer.cxx:99 AliMUONGeometryModuleTransformer.cxx:100 AliMUONGeometryModuleTransformer.cxx:101 AliMUONGeometryModuleTransformer.cxx:102 AliMUONGeometryModuleTransformer.cxx:103 AliMUONGeometryModuleTransformer.cxx:104 AliMUONGeometryModuleTransformer.cxx:105 AliMUONGeometryModuleTransformer.cxx:106 AliMUONGeometryModuleTransformer.cxx:107 AliMUONGeometryModuleTransformer.cxx:108 AliMUONGeometryModuleTransformer.cxx:109 AliMUONGeometryModuleTransformer.cxx:110 AliMUONGeometryModuleTransformer.cxx:111 AliMUONGeometryModuleTransformer.cxx:112 AliMUONGeometryModuleTransformer.cxx:113 AliMUONGeometryModuleTransformer.cxx:114 AliMUONGeometryModuleTransformer.cxx:115 AliMUONGeometryModuleTransformer.cxx:116 AliMUONGeometryModuleTransformer.cxx:117 AliMUONGeometryModuleTransformer.cxx:118 AliMUONGeometryModuleTransformer.cxx:119 AliMUONGeometryModuleTransformer.cxx:120 AliMUONGeometryModuleTransformer.cxx:121 AliMUONGeometryModuleTransformer.cxx:122 AliMUONGeometryModuleTransformer.cxx:123 AliMUONGeometryModuleTransformer.cxx:124 AliMUONGeometryModuleTransformer.cxx:125 AliMUONGeometryModuleTransformer.cxx:126 AliMUONGeometryModuleTransformer.cxx:127 AliMUONGeometryModuleTransformer.cxx:128 AliMUONGeometryModuleTransformer.cxx:129 AliMUONGeometryModuleTransformer.cxx:130 AliMUONGeometryModuleTransformer.cxx:131 AliMUONGeometryModuleTransformer.cxx:132 AliMUONGeometryModuleTransformer.cxx:133 AliMUONGeometryModuleTransformer.cxx:134 AliMUONGeometryModuleTransformer.cxx:135 AliMUONGeometryModuleTransformer.cxx:136 AliMUONGeometryModuleTransformer.cxx:137 AliMUONGeometryModuleTransformer.cxx:138 AliMUONGeometryModuleTransformer.cxx:139 AliMUONGeometryModuleTransformer.cxx:140 AliMUONGeometryModuleTransformer.cxx:141 AliMUONGeometryModuleTransformer.cxx:142 AliMUONGeometryModuleTransformer.cxx:143 AliMUONGeometryModuleTransformer.cxx:144 AliMUONGeometryModuleTransformer.cxx:145 AliMUONGeometryModuleTransformer.cxx:146 AliMUONGeometryModuleTransformer.cxx:147 AliMUONGeometryModuleTransformer.cxx:148 AliMUONGeometryModuleTransformer.cxx:149 AliMUONGeometryModuleTransformer.cxx:150 AliMUONGeometryModuleTransformer.cxx:151 AliMUONGeometryModuleTransformer.cxx:152 AliMUONGeometryModuleTransformer.cxx:153 AliMUONGeometryModuleTransformer.cxx:154 AliMUONGeometryModuleTransformer.cxx:155 AliMUONGeometryModuleTransformer.cxx:156 AliMUONGeometryModuleTransformer.cxx:157 AliMUONGeometryModuleTransformer.cxx:158 AliMUONGeometryModuleTransformer.cxx:159 AliMUONGeometryModuleTransformer.cxx:160 AliMUONGeometryModuleTransformer.cxx:161 AliMUONGeometryModuleTransformer.cxx:162 AliMUONGeometryModuleTransformer.cxx:163 AliMUONGeometryModuleTransformer.cxx:164 AliMUONGeometryModuleTransformer.cxx:165 AliMUONGeometryModuleTransformer.cxx:166 AliMUONGeometryModuleTransformer.cxx:167 AliMUONGeometryModuleTransformer.cxx:168 AliMUONGeometryModuleTransformer.cxx:169 AliMUONGeometryModuleTransformer.cxx:170 AliMUONGeometryModuleTransformer.cxx:171 AliMUONGeometryModuleTransformer.cxx:172 AliMUONGeometryModuleTransformer.cxx:173 AliMUONGeometryModuleTransformer.cxx:174 AliMUONGeometryModuleTransformer.cxx:175 AliMUONGeometryModuleTransformer.cxx:176 AliMUONGeometryModuleTransformer.cxx:177 AliMUONGeometryModuleTransformer.cxx:178 AliMUONGeometryModuleTransformer.cxx:179 AliMUONGeometryModuleTransformer.cxx:180 AliMUONGeometryModuleTransformer.cxx:181 AliMUONGeometryModuleTransformer.cxx:182 AliMUONGeometryModuleTransformer.cxx:183 AliMUONGeometryModuleTransformer.cxx:184 AliMUONGeometryModuleTransformer.cxx:185 AliMUONGeometryModuleTransformer.cxx:186 AliMUONGeometryModuleTransformer.cxx:187 AliMUONGeometryModuleTransformer.cxx:188 AliMUONGeometryModuleTransformer.cxx:189 AliMUONGeometryModuleTransformer.cxx:190 AliMUONGeometryModuleTransformer.cxx:191 AliMUONGeometryModuleTransformer.cxx:192 AliMUONGeometryModuleTransformer.cxx:193 AliMUONGeometryModuleTransformer.cxx:194 AliMUONGeometryModuleTransformer.cxx:195 AliMUONGeometryModuleTransformer.cxx:196 AliMUONGeometryModuleTransformer.cxx:197 AliMUONGeometryModuleTransformer.cxx:198 AliMUONGeometryModuleTransformer.cxx:199 AliMUONGeometryModuleTransformer.cxx:200 AliMUONGeometryModuleTransformer.cxx:201 AliMUONGeometryModuleTransformer.cxx:202 AliMUONGeometryModuleTransformer.cxx:203 AliMUONGeometryModuleTransformer.cxx:204 AliMUONGeometryModuleTransformer.cxx:205 AliMUONGeometryModuleTransformer.cxx:206 AliMUONGeometryModuleTransformer.cxx:207 AliMUONGeometryModuleTransformer.cxx:208 AliMUONGeometryModuleTransformer.cxx:209 AliMUONGeometryModuleTransformer.cxx:210 AliMUONGeometryModuleTransformer.cxx:211 AliMUONGeometryModuleTransformer.cxx:212 AliMUONGeometryModuleTransformer.cxx:213 AliMUONGeometryModuleTransformer.cxx:214 AliMUONGeometryModuleTransformer.cxx:215 AliMUONGeometryModuleTransformer.cxx:216 AliMUONGeometryModuleTransformer.cxx:217 AliMUONGeometryModuleTransformer.cxx:218 AliMUONGeometryModuleTransformer.cxx:219 AliMUONGeometryModuleTransformer.cxx:220 AliMUONGeometryModuleTransformer.cxx:221 AliMUONGeometryModuleTransformer.cxx:222 AliMUONGeometryModuleTransformer.cxx:223 AliMUONGeometryModuleTransformer.cxx:224 AliMUONGeometryModuleTransformer.cxx:225 AliMUONGeometryModuleTransformer.cxx:226 AliMUONGeometryModuleTransformer.cxx:227 AliMUONGeometryModuleTransformer.cxx:228 AliMUONGeometryModuleTransformer.cxx:229 AliMUONGeometryModuleTransformer.cxx:230 AliMUONGeometryModuleTransformer.cxx:231 AliMUONGeometryModuleTransformer.cxx:232 AliMUONGeometryModuleTransformer.cxx:233 AliMUONGeometryModuleTransformer.cxx:234 AliMUONGeometryModuleTransformer.cxx:235 AliMUONGeometryModuleTransformer.cxx:236 AliMUONGeometryModuleTransformer.cxx:237