#include "AliMpVSegmentation.h"
#include "AliEveMUONChamberData.h"
#include <AliMUONGeometryTransformer.h>
#include <mapping/AliMpDEIterator.h>
#include <mapping/AliMpSector.h>
#include <mapping/AliMpPad.h>
#include <mapping/AliMpSegmentation.h>
#include <mapping/AliMpVSegmentation.h>
#include <TVector2.h>
#include <EveBase/AliEveEventManager.h>
ClassImp(AliEveMUONChamberData)
AliMUONGeometryTransformer* AliEveMUONChamberData::fgTransformer = 0;
AliEveMUONChamberData::AliEveMUONChamberData(Int_t chamber) :
TObject(),
fChamberID(0),
fNDetElem(0),
fNDigits(0),
fNClusters(0),
fNHits(0)
{
fChamberID = chamber;
fNDetElem = 0;
fNDigits = 0;
fNClusters = 0;
fNHits = 0;
for (Int_t i = 0; i < 26; i++) {
for (Int_t j = 0; j < 4; j++) {
fFrameCoord[i][j] = 0.0;
}
}
for (Int_t i = 0; i < 7*4096; i++) {
fDigitBuffer[i] = 0.0;
}
for (Int_t i = 0; i < 5*256; i++) {
fClusterBuffer[i] = 0.0;
}
for (Int_t i = 0; i < 3*256; i++) {
fHitBuffer[i] = 0.0;
}
for (Int_t i = 0; i < 3; i++) {
fChamberBox[i*2 ] = +9999;
fChamberBox[i*2+1] = -9999;
}
if (fgTransformer == 0) {
AliEveEventManager::AssertGeometry();
fgTransformer = new AliMUONGeometryTransformer();
fgTransformer->LoadGeometryData();
}
Init(chamber);
}
AliEveMUONChamberData::~AliEveMUONChamberData()
{
}
void AliEveMUONChamberData::DropData()
{
fNDigits = 0;
fNClusters = 0;
fNHits = 0;
return;
}
void AliEveMUONChamberData::Init(Int_t chamber)
{
Float_t locP[3], gloP[3], locD[3], gloD[3];
Float_t deltax, deltay;
AliMpDEIterator it;
const AliMpVSegmentation *vseg;
const AliMpSector *sector;
TVector2 position;
TVector2 dimension;
for ( it.First(chamber); ! it.IsDone(); it.Next() ) {
Int_t detElemId = it.CurrentDEId();
if (chamber < 4) {
sector = AliMpSegmentation::Instance()->GetSector(detElemId,AliMp::kCath0);
position = TVector2(sector->GetPositionX(), sector->GetPositionY());
dimension = TVector2(sector->GetDimensionX(), sector->GetDimensionY());
locP[0] = position.Px();
locP[1] = position.Py();
locD[0] = dimension.Px() * 2.;
locD[1] = dimension.Py() * 2.;
locP[2] = 0.0;
locD[2] = 0.0;
fgTransformer->Local2Global(detElemId,
locP[0], locP[1], locP[2],
gloP[0], gloP[1], gloP[2]);
fgTransformer->Local2Global(detElemId,
locD[0], locD[1], locD[2],
gloD[0], gloD[1], gloD[2]);
fFrameCoord[fNDetElem][0] = gloP[0];
fFrameCoord[fNDetElem][1] = gloP[1];
fFrameCoord[fNDetElem][2] = gloD[0];
fFrameCoord[fNDetElem][3] = gloD[1];
fFrameCoord[fNDetElem][4] = gloP[2];
fChamberBox[0] = TMath::Min(fChamberBox[0],gloP[0]-gloD[0]);
fChamberBox[1] = TMath::Max(fChamberBox[1],gloP[0]+gloD[0]);
fChamberBox[2] = TMath::Min(fChamberBox[2],gloP[1]-gloD[1]);
fChamberBox[3] = TMath::Max(fChamberBox[3],gloP[1]+gloD[1]);
fChamberBox[4] = TMath::Min(fChamberBox[4],gloP[2]);
fChamberBox[5] = TMath::Max(fChamberBox[5],gloP[2]);
} else {
vseg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::kCath0);
if (vseg == 0) {
printf("No MpVSegmentation for %d detElemId! \n",detElemId);
continue;
}
deltax = vseg->GetDimensionX();
deltay = vseg->GetDimensionY();
locP[0] = -deltax;
locP[1] = -deltay;
locD[0] = +deltax;
locD[1] = +deltay;
locP[2] = 0.0;
locD[2] = 0.0;
fgTransformer->Local2Global(detElemId,
locP[0], locP[1], locP[2],
gloP[0], gloP[1], gloP[2]);
fgTransformer->Local2Global(detElemId,
locD[0], locD[1], locD[2],
gloD[0], gloD[1], gloD[2]);
fFrameCoord[fNDetElem][0] = gloP[0];
fFrameCoord[fNDetElem][1] = gloP[1];
fFrameCoord[fNDetElem][2] = gloD[0];
fFrameCoord[fNDetElem][3] = gloD[1];
fFrameCoord[fNDetElem][4] = gloP[2];
fChamberBox[0] = TMath::Min(fChamberBox[0],gloP[0]);
fChamberBox[0] = TMath::Min(fChamberBox[0],gloD[0]);
fChamberBox[1] = TMath::Max(fChamberBox[1],gloP[0]);
fChamberBox[1] = TMath::Max(fChamberBox[1],gloD[0]);
fChamberBox[2] = TMath::Min(fChamberBox[0],gloP[1]);
fChamberBox[2] = TMath::Min(fChamberBox[0],gloD[1]);
fChamberBox[3] = TMath::Max(fChamberBox[1],gloP[1]);
fChamberBox[3] = TMath::Max(fChamberBox[1],gloD[1]);
fChamberBox[4] = TMath::Min(fChamberBox[4],gloP[2]);
fChamberBox[5] = TMath::Max(fChamberBox[5],gloP[2]);
}
fNDetElem++;
}
}
void AliEveMUONChamberData::RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, Int_t iy, Int_t charge)
{
if ((fNDigits/7) == (4096-1)) return;
Float_t locP[3], gloP[3], locD[3], gloD[3];
const AliMpVSegmentation* vseg = AliMpSegmentation::Instance()
->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode));
AliMpPad pad = vseg->PadByIndices(ix,iy,kTRUE);
locP[0] = pad.GetPositionX();
locP[1] = pad.GetPositionY();
locD[0] = pad.GetDimensionX();
locD[1] = pad.GetDimensionY();
locP[2] = 0.0;
locD[2] = 0.0;
fgTransformer->Local2Global(detElemId,
locP[0], locP[1], locP[2],
gloP[0], gloP[1], gloP[2]);
gloD[0] = locD[0];
gloD[1] = locD[1];
gloD[2] = gloP[2];
if (cathode == 0) gloP[2] += 0.1;
if (cathode == 1) gloP[2] -= 0.1;
fDigitBuffer[fNDigits ] = gloP[0];
fDigitBuffer[fNDigits+1] = gloP[1];
fDigitBuffer[fNDigits+2] = gloD[0];
fDigitBuffer[fNDigits+3] = gloD[1];
fDigitBuffer[fNDigits+4] = gloP[2];
fDigitBuffer[fNDigits+5] = charge;
fDigitBuffer[fNDigits+6] = cathode;
fNDigits += 7;
}
void AliEveMUONChamberData::RegisterCluster(Int_t , Int_t cathode, Float_t clsX, Float_t clsY, Float_t clsZ, Float_t charge)
{
if ((fNClusters/5) == (256-1)) return;
fClusterBuffer[fNClusters ] = clsX;
fClusterBuffer[fNClusters+1] = clsY;
fClusterBuffer[fNClusters+2] = clsZ;
fClusterBuffer[fNClusters+3] = charge;
fClusterBuffer[fNClusters+4] = cathode;
fNClusters += 5;
}
void AliEveMUONChamberData::RegisterHit(Int_t , Float_t hitX, Float_t hitY, Float_t hitZ)
{
if ((fNHits/3) == (256-1)) return;
fHitBuffer[fNHits ] = hitX;
fHitBuffer[fNHits+1] = hitY;
fHitBuffer[fNHits+2] = hitZ;
fNHits += 3;
}
AliEveMUONChamberData.cxx:1 AliEveMUONChamberData.cxx:2 AliEveMUONChamberData.cxx:3 AliEveMUONChamberData.cxx:4 AliEveMUONChamberData.cxx:5 AliEveMUONChamberData.cxx:6 AliEveMUONChamberData.cxx:7 AliEveMUONChamberData.cxx:8 AliEveMUONChamberData.cxx:9 AliEveMUONChamberData.cxx:10 AliEveMUONChamberData.cxx:11 AliEveMUONChamberData.cxx:12 AliEveMUONChamberData.cxx:13 AliEveMUONChamberData.cxx:14 AliEveMUONChamberData.cxx:15 AliEveMUONChamberData.cxx:16 AliEveMUONChamberData.cxx:17 AliEveMUONChamberData.cxx:18 AliEveMUONChamberData.cxx:19 AliEveMUONChamberData.cxx:20 AliEveMUONChamberData.cxx:21 AliEveMUONChamberData.cxx:22 AliEveMUONChamberData.cxx:23 AliEveMUONChamberData.cxx:24 AliEveMUONChamberData.cxx:25 AliEveMUONChamberData.cxx:26 AliEveMUONChamberData.cxx:27 AliEveMUONChamberData.cxx:28 AliEveMUONChamberData.cxx:29 AliEveMUONChamberData.cxx:30 AliEveMUONChamberData.cxx:31 AliEveMUONChamberData.cxx:32 AliEveMUONChamberData.cxx:33 AliEveMUONChamberData.cxx:34 AliEveMUONChamberData.cxx:35 AliEveMUONChamberData.cxx:36 AliEveMUONChamberData.cxx:37 AliEveMUONChamberData.cxx:38 AliEveMUONChamberData.cxx:39 AliEveMUONChamberData.cxx:40 AliEveMUONChamberData.cxx:41 AliEveMUONChamberData.cxx:42 AliEveMUONChamberData.cxx:43 AliEveMUONChamberData.cxx:44 AliEveMUONChamberData.cxx:45 AliEveMUONChamberData.cxx:46 AliEveMUONChamberData.cxx:47 AliEveMUONChamberData.cxx:48 AliEveMUONChamberData.cxx:49 AliEveMUONChamberData.cxx:50 AliEveMUONChamberData.cxx:51 AliEveMUONChamberData.cxx:52 AliEveMUONChamberData.cxx:53 AliEveMUONChamberData.cxx:54 AliEveMUONChamberData.cxx:55 AliEveMUONChamberData.cxx:56 AliEveMUONChamberData.cxx:57 AliEveMUONChamberData.cxx:58 AliEveMUONChamberData.cxx:59 AliEveMUONChamberData.cxx:60 AliEveMUONChamberData.cxx:61 AliEveMUONChamberData.cxx:62 AliEveMUONChamberData.cxx:63 AliEveMUONChamberData.cxx:64 AliEveMUONChamberData.cxx:65 AliEveMUONChamberData.cxx:66 AliEveMUONChamberData.cxx:67 AliEveMUONChamberData.cxx:68 AliEveMUONChamberData.cxx:69 AliEveMUONChamberData.cxx:70 AliEveMUONChamberData.cxx:71 AliEveMUONChamberData.cxx:72 AliEveMUONChamberData.cxx:73 AliEveMUONChamberData.cxx:74 AliEveMUONChamberData.cxx:75 AliEveMUONChamberData.cxx:76 AliEveMUONChamberData.cxx:77 AliEveMUONChamberData.cxx:78 AliEveMUONChamberData.cxx:79 AliEveMUONChamberData.cxx:80 AliEveMUONChamberData.cxx:81 AliEveMUONChamberData.cxx:82 AliEveMUONChamberData.cxx:83 AliEveMUONChamberData.cxx:84 AliEveMUONChamberData.cxx:85 AliEveMUONChamberData.cxx:86 AliEveMUONChamberData.cxx:87 AliEveMUONChamberData.cxx:88 AliEveMUONChamberData.cxx:89 AliEveMUONChamberData.cxx:90 AliEveMUONChamberData.cxx:91 AliEveMUONChamberData.cxx:92 AliEveMUONChamberData.cxx:93 AliEveMUONChamberData.cxx:94 AliEveMUONChamberData.cxx:95 AliEveMUONChamberData.cxx:96 AliEveMUONChamberData.cxx:97 AliEveMUONChamberData.cxx:98 AliEveMUONChamberData.cxx:99 AliEveMUONChamberData.cxx:100 AliEveMUONChamberData.cxx:101 AliEveMUONChamberData.cxx:102 AliEveMUONChamberData.cxx:103 AliEveMUONChamberData.cxx:104 AliEveMUONChamberData.cxx:105 AliEveMUONChamberData.cxx:106 AliEveMUONChamberData.cxx:107 AliEveMUONChamberData.cxx:108 AliEveMUONChamberData.cxx:109 AliEveMUONChamberData.cxx:110 AliEveMUONChamberData.cxx:111 AliEveMUONChamberData.cxx:112 AliEveMUONChamberData.cxx:113 AliEveMUONChamberData.cxx:114 AliEveMUONChamberData.cxx:115 AliEveMUONChamberData.cxx:116 AliEveMUONChamberData.cxx:117 AliEveMUONChamberData.cxx:118 AliEveMUONChamberData.cxx:119 AliEveMUONChamberData.cxx:120 AliEveMUONChamberData.cxx:121 AliEveMUONChamberData.cxx:122 AliEveMUONChamberData.cxx:123 AliEveMUONChamberData.cxx:124 AliEveMUONChamberData.cxx:125 AliEveMUONChamberData.cxx:126 AliEveMUONChamberData.cxx:127 AliEveMUONChamberData.cxx:128 AliEveMUONChamberData.cxx:129 AliEveMUONChamberData.cxx:130 AliEveMUONChamberData.cxx:131 AliEveMUONChamberData.cxx:132 AliEveMUONChamberData.cxx:133 AliEveMUONChamberData.cxx:134 AliEveMUONChamberData.cxx:135 AliEveMUONChamberData.cxx:136 AliEveMUONChamberData.cxx:137 AliEveMUONChamberData.cxx:138 AliEveMUONChamberData.cxx:139 AliEveMUONChamberData.cxx:140 AliEveMUONChamberData.cxx:141 AliEveMUONChamberData.cxx:142 AliEveMUONChamberData.cxx:143 AliEveMUONChamberData.cxx:144 AliEveMUONChamberData.cxx:145 AliEveMUONChamberData.cxx:146 AliEveMUONChamberData.cxx:147 AliEveMUONChamberData.cxx:148 AliEveMUONChamberData.cxx:149 AliEveMUONChamberData.cxx:150 AliEveMUONChamberData.cxx:151 AliEveMUONChamberData.cxx:152 AliEveMUONChamberData.cxx:153 AliEveMUONChamberData.cxx:154 AliEveMUONChamberData.cxx:155 AliEveMUONChamberData.cxx:156 AliEveMUONChamberData.cxx:157 AliEveMUONChamberData.cxx:158 AliEveMUONChamberData.cxx:159 AliEveMUONChamberData.cxx:160 AliEveMUONChamberData.cxx:161 AliEveMUONChamberData.cxx:162 AliEveMUONChamberData.cxx:163 AliEveMUONChamberData.cxx:164 AliEveMUONChamberData.cxx:165 AliEveMUONChamberData.cxx:166 AliEveMUONChamberData.cxx:167 AliEveMUONChamberData.cxx:168 AliEveMUONChamberData.cxx:169 AliEveMUONChamberData.cxx:170 AliEveMUONChamberData.cxx:171 AliEveMUONChamberData.cxx:172 AliEveMUONChamberData.cxx:173 AliEveMUONChamberData.cxx:174 AliEveMUONChamberData.cxx:175 AliEveMUONChamberData.cxx:176 AliEveMUONChamberData.cxx:177 AliEveMUONChamberData.cxx:178 AliEveMUONChamberData.cxx:179 AliEveMUONChamberData.cxx:180 AliEveMUONChamberData.cxx:181 AliEveMUONChamberData.cxx:182 AliEveMUONChamberData.cxx:183 AliEveMUONChamberData.cxx:184 AliEveMUONChamberData.cxx:185 AliEveMUONChamberData.cxx:186 AliEveMUONChamberData.cxx:187 AliEveMUONChamberData.cxx:188 AliEveMUONChamberData.cxx:189 AliEveMUONChamberData.cxx:190 AliEveMUONChamberData.cxx:191 AliEveMUONChamberData.cxx:192 AliEveMUONChamberData.cxx:193 AliEveMUONChamberData.cxx:194 AliEveMUONChamberData.cxx:195 AliEveMUONChamberData.cxx:196 AliEveMUONChamberData.cxx:197 AliEveMUONChamberData.cxx:198 AliEveMUONChamberData.cxx:199 AliEveMUONChamberData.cxx:200 AliEveMUONChamberData.cxx:201 AliEveMUONChamberData.cxx:202 AliEveMUONChamberData.cxx:203 AliEveMUONChamberData.cxx:204 AliEveMUONChamberData.cxx:205 AliEveMUONChamberData.cxx:206 AliEveMUONChamberData.cxx:207 AliEveMUONChamberData.cxx:208 AliEveMUONChamberData.cxx:209 AliEveMUONChamberData.cxx:210 AliEveMUONChamberData.cxx:211 AliEveMUONChamberData.cxx:212 AliEveMUONChamberData.cxx:213 AliEveMUONChamberData.cxx:214 AliEveMUONChamberData.cxx:215 AliEveMUONChamberData.cxx:216 AliEveMUONChamberData.cxx:217 AliEveMUONChamberData.cxx:218 AliEveMUONChamberData.cxx:219 AliEveMUONChamberData.cxx:220 AliEveMUONChamberData.cxx:221 AliEveMUONChamberData.cxx:222 AliEveMUONChamberData.cxx:223 AliEveMUONChamberData.cxx:224 AliEveMUONChamberData.cxx:225 AliEveMUONChamberData.cxx:226 AliEveMUONChamberData.cxx:227 AliEveMUONChamberData.cxx:228 AliEveMUONChamberData.cxx:229 AliEveMUONChamberData.cxx:230 AliEveMUONChamberData.cxx:231 AliEveMUONChamberData.cxx:232 AliEveMUONChamberData.cxx:233 AliEveMUONChamberData.cxx:234 AliEveMUONChamberData.cxx:235 AliEveMUONChamberData.cxx:236 AliEveMUONChamberData.cxx:237 AliEveMUONChamberData.cxx:238 AliEveMUONChamberData.cxx:239 AliEveMUONChamberData.cxx:240 AliEveMUONChamberData.cxx:241 AliEveMUONChamberData.cxx:242 AliEveMUONChamberData.cxx:243 AliEveMUONChamberData.cxx:244 AliEveMUONChamberData.cxx:245 AliEveMUONChamberData.cxx:246 AliEveMUONChamberData.cxx:247 AliEveMUONChamberData.cxx:248 AliEveMUONChamberData.cxx:249 AliEveMUONChamberData.cxx:250 AliEveMUONChamberData.cxx:251 AliEveMUONChamberData.cxx:252 AliEveMUONChamberData.cxx:253 AliEveMUONChamberData.cxx:254 AliEveMUONChamberData.cxx:255 AliEveMUONChamberData.cxx:256 AliEveMUONChamberData.cxx:257 AliEveMUONChamberData.cxx:258 AliEveMUONChamberData.cxx:259 AliEveMUONChamberData.cxx:260 AliEveMUONChamberData.cxx:261 AliEveMUONChamberData.cxx:262 AliEveMUONChamberData.cxx:263 AliEveMUONChamberData.cxx:264 AliEveMUONChamberData.cxx:265 AliEveMUONChamberData.cxx:266 AliEveMUONChamberData.cxx:267 AliEveMUONChamberData.cxx:268 AliEveMUONChamberData.cxx:269 AliEveMUONChamberData.cxx:270 AliEveMUONChamberData.cxx:271 AliEveMUONChamberData.cxx:272 AliEveMUONChamberData.cxx:273 AliEveMUONChamberData.cxx:274 AliEveMUONChamberData.cxx:275 AliEveMUONChamberData.cxx:276 AliEveMUONChamberData.cxx:277 AliEveMUONChamberData.cxx:278 AliEveMUONChamberData.cxx:279 AliEveMUONChamberData.cxx:280 AliEveMUONChamberData.cxx:281 AliEveMUONChamberData.cxx:282 AliEveMUONChamberData.cxx:283 AliEveMUONChamberData.cxx:284 AliEveMUONChamberData.cxx:285 AliEveMUONChamberData.cxx:286 AliEveMUONChamberData.cxx:287 AliEveMUONChamberData.cxx:288 AliEveMUONChamberData.cxx:289 AliEveMUONChamberData.cxx:290 AliEveMUONChamberData.cxx:291 AliEveMUONChamberData.cxx:292 AliEveMUONChamberData.cxx:293 AliEveMUONChamberData.cxx:294 AliEveMUONChamberData.cxx:295 AliEveMUONChamberData.cxx:296 AliEveMUONChamberData.cxx:297 AliEveMUONChamberData.cxx:298 AliEveMUONChamberData.cxx:299 AliEveMUONChamberData.cxx:300 AliEveMUONChamberData.cxx:301 AliEveMUONChamberData.cxx:302