#include <Riostream.h>
#include <TMath.h>
#include "AliMpRowSegmentLSpecial.h"
#include "AliMpRow.h"
#include "AliMpPadRow.h"
#include "AliMpVPadRowSegment.h"
#include "AliMpMotif.h"
#include "AliMpMotifType.h"
#include "AliMpMotifMap.h"
#include "AliMpMotifPosition.h"
#include "AliMpConstants.h"
#include "AliMpEncodePair.h"
#include "AliLog.h"
using std::endl;
ClassImp(AliMpRowSegmentLSpecial)
AliMpRowSegmentLSpecial::AliMpRowSegmentLSpecial(AliMpRow* row, Double_t offsetX)
: AliMpVRowSegmentSpecial(row, offsetX)
{
}
AliMpRowSegmentLSpecial::AliMpRowSegmentLSpecial()
: AliMpVRowSegmentSpecial()
{
}
AliMpRowSegmentLSpecial::~AliMpRowSegmentLSpecial()
{
}
AliMpVPadRowSegment*
AliMpRowSegmentLSpecial::FindMostRightPadRowSegment(Int_t motifPositionId) const
{
AliMpVPadRowSegment* found = 0;
for (Int_t i=0; i<GetNofPadRows(); i++) {
AliMpPadRow* padRow = GetPadRow(i);
for (Int_t j=0; j<padRow->GetNofPadRowSegments(); j++) {
AliMpVPadRowSegment* padRowSegment = padRow->GetPadRowSegment(j);
if ( padRowSegment->GetMotifPositionId() == motifPositionId &&
(!found || padRowSegment->RightBorderX() > found->RightBorderX()))
found = padRowSegment;
}
}
return found;
}
void AliMpRowSegmentLSpecial::MotifCenterSlow(Int_t motifPositionId,
Double_t& x, Double_t& y) const
{
AliMpVPadRowSegment* downPadRowSegment
= FindPadRowSegment(motifPositionId);
AliMpVPadRowSegment* rightPadRowSegment
= FindMostRightPadRowSegment(motifPositionId);
if (!downPadRowSegment || !rightPadRowSegment) {
AliErrorStream() << "Outside row segment region" << endl;
return;
}
if (downPadRowSegment->GetMotif() != rightPadRowSegment->GetMotif()) {
AliFatal("Outside row segment region");
return;
}
x = rightPadRowSegment->RightBorderX();
y = GetRow()->LowBorderY() ;
for (Int_t i=0; i<downPadRowSegment->GetPadRow()->GetID(); i++)
y += GetPadRow(i)->HalfSizeY()*2.;
x -= downPadRowSegment->GetMotif()->DimensionX();
y += downPadRowSegment->GetMotif()->DimensionY();
}
void AliMpRowSegmentLSpecial::UpdatePadsOffset()
{
AliMpVRowSegment* neighbour = GetRow()->GetRowSegment(1);
MpPair_t offset = neighbour->GetLowIndicesLimit();
Int_t maxNofPads = MaxNofPadsInRow();
SetLowIndicesLimit(offset - AliMp::Pair(maxNofPads, 0));
neighbour->SetLowIndicesLimit(0, neighbour->GetLowLimitIy());
}
Double_t AliMpRowSegmentLSpecial::LeftBorderX() const
{
Double_t leftBorder = DBL_MAX;
for (Int_t i=0; i<GetNofPadRows(); i++) {
AliMpPadRow* padRow = GetPadRow(i);
Double_t border
= padRow->GetPadRowSegment(padRow->GetNofPadRowSegments()-1)->LeftBorderX();
if (border < leftBorder) leftBorder = border;
}
return leftBorder;
}
Double_t AliMpRowSegmentLSpecial::RightBorderX() const
{
Double_t sameBorder = GetOffsetX();
Double_t rightBorder = -DBL_MAX;
for (Int_t i=0; i<GetNofPadRows(); i++) {
AliMpPadRow* padRow = GetPadRow(i);
Double_t border = padRow->GetPadRowSegment(0)->RightBorderX();
if (border > rightBorder) rightBorder = border;
}
if (TMath::Abs(GetOffsetX() - rightBorder) > 1.e-04) {
AliErrorStream() << "WrongBorder" << endl;
return sameBorder;
}
return rightBorder;
}
Double_t AliMpRowSegmentLSpecial::GetPositionX() const
{
return GetOffsetX() - GetDimensionX();
}
Double_t AliMpRowSegmentLSpecial::GetPositionY() const
{
return GetRow()->GetPositionY();
}
#include <Riostream.h>
Int_t AliMpRowSegmentLSpecial::SetIndicesToMotifPosition(Int_t i, MpPair_t indices)
{
AliMpMotifPosition* motifPosition
= GetRow()->GetMotifMap()->FindMotifPosition(GetMotifPositionId(i));
MpPair_t low
= AliMp::Pair(GetLowLimitIx() + AliMpConstants::StartPadIndex(),
AliMp::PairSecond(indices))
+ FindRelativeLowIndicesOf(GetMotifPositionId(i));
if (! motifPosition->IsHighLimitValid()) {
motifPosition->SetLowIndicesLimit(low);
}
else {
if ( motifPosition->GetLowLimitIx() > AliMp::PairFirst(low) )
motifPosition->SetLowIndicesLimit(
AliMp::PairFirst(low),
motifPosition->GetLowLimitIy());
if ( motifPosition->GetLowLimitIy() > AliMp::PairSecond(low) )
motifPosition->SetLowIndicesLimit(
motifPosition->GetLowLimitIx(),
AliMp::PairSecond(low) );
}
AliMpMotifType* motifType = motifPosition->GetMotif()->GetMotifType();
MpPair_t high
= motifPosition->GetLowIndicesLimit()
+ AliMp::Pair(motifType->GetNofPadsX()-1, motifType->GetNofPadsY()-1);
motifPosition->SetHighIndicesLimit(high);
if ( i != GetNofMotifs()-1 )
return AliMp::PairFirst(indices);
else
return AliMp::PairFirst(indices) + MaxNofPadsInRow();
}
void AliMpRowSegmentLSpecial::SetGlobalIndices(AliMpRow* rowBefore)
{
Int_t ixl = GetLowLimitIx() + AliMpConstants::StartPadIndex();
Int_t ixh = ixl + MaxNofPadsInRow() - 1;
Int_t iyl = AliMpConstants::StartPadIndex();
if (rowBefore) {
iyl = rowBefore->GetHighLimitIy()+1;
}
Int_t iyh = iyl + GetNofPadRows() - 1;
SetLowIndicesLimit(ixl, iyl);
SetHighIndicesLimit(ixh, iyh);
}
AliMpRowSegmentLSpecial.cxx:1 AliMpRowSegmentLSpecial.cxx:2 AliMpRowSegmentLSpecial.cxx:3 AliMpRowSegmentLSpecial.cxx:4 AliMpRowSegmentLSpecial.cxx:5 AliMpRowSegmentLSpecial.cxx:6 AliMpRowSegmentLSpecial.cxx:7 AliMpRowSegmentLSpecial.cxx:8 AliMpRowSegmentLSpecial.cxx:9 AliMpRowSegmentLSpecial.cxx:10 AliMpRowSegmentLSpecial.cxx:11 AliMpRowSegmentLSpecial.cxx:12 AliMpRowSegmentLSpecial.cxx:13 AliMpRowSegmentLSpecial.cxx:14 AliMpRowSegmentLSpecial.cxx:15 AliMpRowSegmentLSpecial.cxx:16 AliMpRowSegmentLSpecial.cxx:17 AliMpRowSegmentLSpecial.cxx:18 AliMpRowSegmentLSpecial.cxx:19 AliMpRowSegmentLSpecial.cxx:20 AliMpRowSegmentLSpecial.cxx:21 AliMpRowSegmentLSpecial.cxx:22 AliMpRowSegmentLSpecial.cxx:23 AliMpRowSegmentLSpecial.cxx:24 AliMpRowSegmentLSpecial.cxx:25 AliMpRowSegmentLSpecial.cxx:26 AliMpRowSegmentLSpecial.cxx:27 AliMpRowSegmentLSpecial.cxx:28 AliMpRowSegmentLSpecial.cxx:29 AliMpRowSegmentLSpecial.cxx:30 AliMpRowSegmentLSpecial.cxx:31 AliMpRowSegmentLSpecial.cxx:32 AliMpRowSegmentLSpecial.cxx:33 AliMpRowSegmentLSpecial.cxx:34 AliMpRowSegmentLSpecial.cxx:35 AliMpRowSegmentLSpecial.cxx:36 AliMpRowSegmentLSpecial.cxx:37 AliMpRowSegmentLSpecial.cxx:38 AliMpRowSegmentLSpecial.cxx:39 AliMpRowSegmentLSpecial.cxx:40 AliMpRowSegmentLSpecial.cxx:41 AliMpRowSegmentLSpecial.cxx:42 AliMpRowSegmentLSpecial.cxx:43 AliMpRowSegmentLSpecial.cxx:44 AliMpRowSegmentLSpecial.cxx:45 AliMpRowSegmentLSpecial.cxx:46 AliMpRowSegmentLSpecial.cxx:47 AliMpRowSegmentLSpecial.cxx:48 AliMpRowSegmentLSpecial.cxx:49 AliMpRowSegmentLSpecial.cxx:50 AliMpRowSegmentLSpecial.cxx:51 AliMpRowSegmentLSpecial.cxx:52 AliMpRowSegmentLSpecial.cxx:53 AliMpRowSegmentLSpecial.cxx:54 AliMpRowSegmentLSpecial.cxx:55 AliMpRowSegmentLSpecial.cxx:56 AliMpRowSegmentLSpecial.cxx:57 AliMpRowSegmentLSpecial.cxx:58 AliMpRowSegmentLSpecial.cxx:59 AliMpRowSegmentLSpecial.cxx:60 AliMpRowSegmentLSpecial.cxx:61 AliMpRowSegmentLSpecial.cxx:62 AliMpRowSegmentLSpecial.cxx:63 AliMpRowSegmentLSpecial.cxx:64 AliMpRowSegmentLSpecial.cxx:65 AliMpRowSegmentLSpecial.cxx:66 AliMpRowSegmentLSpecial.cxx:67 AliMpRowSegmentLSpecial.cxx:68 AliMpRowSegmentLSpecial.cxx:69 AliMpRowSegmentLSpecial.cxx:70 AliMpRowSegmentLSpecial.cxx:71 AliMpRowSegmentLSpecial.cxx:72 AliMpRowSegmentLSpecial.cxx:73 AliMpRowSegmentLSpecial.cxx:74 AliMpRowSegmentLSpecial.cxx:75 AliMpRowSegmentLSpecial.cxx:76 AliMpRowSegmentLSpecial.cxx:77 AliMpRowSegmentLSpecial.cxx:78 AliMpRowSegmentLSpecial.cxx:79 AliMpRowSegmentLSpecial.cxx:80 AliMpRowSegmentLSpecial.cxx:81 AliMpRowSegmentLSpecial.cxx:82 AliMpRowSegmentLSpecial.cxx:83 AliMpRowSegmentLSpecial.cxx:84 AliMpRowSegmentLSpecial.cxx:85 AliMpRowSegmentLSpecial.cxx:86 AliMpRowSegmentLSpecial.cxx:87 AliMpRowSegmentLSpecial.cxx:88 AliMpRowSegmentLSpecial.cxx:89 AliMpRowSegmentLSpecial.cxx:90 AliMpRowSegmentLSpecial.cxx:91 AliMpRowSegmentLSpecial.cxx:92 AliMpRowSegmentLSpecial.cxx:93 AliMpRowSegmentLSpecial.cxx:94 AliMpRowSegmentLSpecial.cxx:95 AliMpRowSegmentLSpecial.cxx:96 AliMpRowSegmentLSpecial.cxx:97 AliMpRowSegmentLSpecial.cxx:98 AliMpRowSegmentLSpecial.cxx:99 AliMpRowSegmentLSpecial.cxx:100 AliMpRowSegmentLSpecial.cxx:101 AliMpRowSegmentLSpecial.cxx:102 AliMpRowSegmentLSpecial.cxx:103 AliMpRowSegmentLSpecial.cxx:104 AliMpRowSegmentLSpecial.cxx:105 AliMpRowSegmentLSpecial.cxx:106 AliMpRowSegmentLSpecial.cxx:107 AliMpRowSegmentLSpecial.cxx:108 AliMpRowSegmentLSpecial.cxx:109 AliMpRowSegmentLSpecial.cxx:110 AliMpRowSegmentLSpecial.cxx:111 AliMpRowSegmentLSpecial.cxx:112 AliMpRowSegmentLSpecial.cxx:113 AliMpRowSegmentLSpecial.cxx:114 AliMpRowSegmentLSpecial.cxx:115 AliMpRowSegmentLSpecial.cxx:116 AliMpRowSegmentLSpecial.cxx:117 AliMpRowSegmentLSpecial.cxx:118 AliMpRowSegmentLSpecial.cxx:119 AliMpRowSegmentLSpecial.cxx:120 AliMpRowSegmentLSpecial.cxx:121 AliMpRowSegmentLSpecial.cxx:122 AliMpRowSegmentLSpecial.cxx:123 AliMpRowSegmentLSpecial.cxx:124 AliMpRowSegmentLSpecial.cxx:125 AliMpRowSegmentLSpecial.cxx:126 AliMpRowSegmentLSpecial.cxx:127 AliMpRowSegmentLSpecial.cxx:128 AliMpRowSegmentLSpecial.cxx:129 AliMpRowSegmentLSpecial.cxx:130 AliMpRowSegmentLSpecial.cxx:131 AliMpRowSegmentLSpecial.cxx:132 AliMpRowSegmentLSpecial.cxx:133 AliMpRowSegmentLSpecial.cxx:134 AliMpRowSegmentLSpecial.cxx:135 AliMpRowSegmentLSpecial.cxx:136 AliMpRowSegmentLSpecial.cxx:137 AliMpRowSegmentLSpecial.cxx:138 AliMpRowSegmentLSpecial.cxx:139 AliMpRowSegmentLSpecial.cxx:140 AliMpRowSegmentLSpecial.cxx:141 AliMpRowSegmentLSpecial.cxx:142 AliMpRowSegmentLSpecial.cxx:143 AliMpRowSegmentLSpecial.cxx:144 AliMpRowSegmentLSpecial.cxx:145 AliMpRowSegmentLSpecial.cxx:146 AliMpRowSegmentLSpecial.cxx:147 AliMpRowSegmentLSpecial.cxx:148 AliMpRowSegmentLSpecial.cxx:149 AliMpRowSegmentLSpecial.cxx:150 AliMpRowSegmentLSpecial.cxx:151 AliMpRowSegmentLSpecial.cxx:152 AliMpRowSegmentLSpecial.cxx:153 AliMpRowSegmentLSpecial.cxx:154 AliMpRowSegmentLSpecial.cxx:155 AliMpRowSegmentLSpecial.cxx:156 AliMpRowSegmentLSpecial.cxx:157 AliMpRowSegmentLSpecial.cxx:158 AliMpRowSegmentLSpecial.cxx:159 AliMpRowSegmentLSpecial.cxx:160 AliMpRowSegmentLSpecial.cxx:161 AliMpRowSegmentLSpecial.cxx:162 AliMpRowSegmentLSpecial.cxx:163 AliMpRowSegmentLSpecial.cxx:164 AliMpRowSegmentLSpecial.cxx:165 AliMpRowSegmentLSpecial.cxx:166 AliMpRowSegmentLSpecial.cxx:167 AliMpRowSegmentLSpecial.cxx:168 AliMpRowSegmentLSpecial.cxx:169 AliMpRowSegmentLSpecial.cxx:170 AliMpRowSegmentLSpecial.cxx:171 AliMpRowSegmentLSpecial.cxx:172 AliMpRowSegmentLSpecial.cxx:173 AliMpRowSegmentLSpecial.cxx:174 AliMpRowSegmentLSpecial.cxx:175 AliMpRowSegmentLSpecial.cxx:176 AliMpRowSegmentLSpecial.cxx:177 AliMpRowSegmentLSpecial.cxx:178 AliMpRowSegmentLSpecial.cxx:179 AliMpRowSegmentLSpecial.cxx:180 AliMpRowSegmentLSpecial.cxx:181 AliMpRowSegmentLSpecial.cxx:182 AliMpRowSegmentLSpecial.cxx:183 AliMpRowSegmentLSpecial.cxx:184 AliMpRowSegmentLSpecial.cxx:185 AliMpRowSegmentLSpecial.cxx:186 AliMpRowSegmentLSpecial.cxx:187 AliMpRowSegmentLSpecial.cxx:188 AliMpRowSegmentLSpecial.cxx:189 AliMpRowSegmentLSpecial.cxx:190 AliMpRowSegmentLSpecial.cxx:191 AliMpRowSegmentLSpecial.cxx:192 AliMpRowSegmentLSpecial.cxx:193 AliMpRowSegmentLSpecial.cxx:194 AliMpRowSegmentLSpecial.cxx:195 AliMpRowSegmentLSpecial.cxx:196 AliMpRowSegmentLSpecial.cxx:197 AliMpRowSegmentLSpecial.cxx:198 AliMpRowSegmentLSpecial.cxx:199 AliMpRowSegmentLSpecial.cxx:200 AliMpRowSegmentLSpecial.cxx:201 AliMpRowSegmentLSpecial.cxx:202 AliMpRowSegmentLSpecial.cxx:203 AliMpRowSegmentLSpecial.cxx:204 AliMpRowSegmentLSpecial.cxx:205 AliMpRowSegmentLSpecial.cxx:206 AliMpRowSegmentLSpecial.cxx:207 AliMpRowSegmentLSpecial.cxx:208 AliMpRowSegmentLSpecial.cxx:209 AliMpRowSegmentLSpecial.cxx:210 AliMpRowSegmentLSpecial.cxx:211 AliMpRowSegmentLSpecial.cxx:212 AliMpRowSegmentLSpecial.cxx:213 AliMpRowSegmentLSpecial.cxx:214 AliMpRowSegmentLSpecial.cxx:215 AliMpRowSegmentLSpecial.cxx:216 AliMpRowSegmentLSpecial.cxx:217 AliMpRowSegmentLSpecial.cxx:218 AliMpRowSegmentLSpecial.cxx:219 AliMpRowSegmentLSpecial.cxx:220 AliMpRowSegmentLSpecial.cxx:221 AliMpRowSegmentLSpecial.cxx:222 AliMpRowSegmentLSpecial.cxx:223 AliMpRowSegmentLSpecial.cxx:224 AliMpRowSegmentLSpecial.cxx:225 AliMpRowSegmentLSpecial.cxx:226 AliMpRowSegmentLSpecial.cxx:227 AliMpRowSegmentLSpecial.cxx:228 AliMpRowSegmentLSpecial.cxx:229 AliMpRowSegmentLSpecial.cxx:230 AliMpRowSegmentLSpecial.cxx:231 AliMpRowSegmentLSpecial.cxx:232 AliMpRowSegmentLSpecial.cxx:233 AliMpRowSegmentLSpecial.cxx:234 AliMpRowSegmentLSpecial.cxx:235 AliMpRowSegmentLSpecial.cxx:236 AliMpRowSegmentLSpecial.cxx:237 AliMpRowSegmentLSpecial.cxx:238 AliMpRowSegmentLSpecial.cxx:239 AliMpRowSegmentLSpecial.cxx:240 AliMpRowSegmentLSpecial.cxx:241 AliMpRowSegmentLSpecial.cxx:242 AliMpRowSegmentLSpecial.cxx:243 AliMpRowSegmentLSpecial.cxx:244 AliMpRowSegmentLSpecial.cxx:245 AliMpRowSegmentLSpecial.cxx:246 AliMpRowSegmentLSpecial.cxx:247 AliMpRowSegmentLSpecial.cxx:248 AliMpRowSegmentLSpecial.cxx:249 AliMpRowSegmentLSpecial.cxx:250 AliMpRowSegmentLSpecial.cxx:251 AliMpRowSegmentLSpecial.cxx:252 AliMpRowSegmentLSpecial.cxx:253 AliMpRowSegmentLSpecial.cxx:254 AliMpRowSegmentLSpecial.cxx:255 AliMpRowSegmentLSpecial.cxx:256 AliMpRowSegmentLSpecial.cxx:257 AliMpRowSegmentLSpecial.cxx:258 AliMpRowSegmentLSpecial.cxx:259 AliMpRowSegmentLSpecial.cxx:260 AliMpRowSegmentLSpecial.cxx:261 AliMpRowSegmentLSpecial.cxx:262 AliMpRowSegmentLSpecial.cxx:263 AliMpRowSegmentLSpecial.cxx:264 AliMpRowSegmentLSpecial.cxx:265 AliMpRowSegmentLSpecial.cxx:266 AliMpRowSegmentLSpecial.cxx:267 AliMpRowSegmentLSpecial.cxx:268 AliMpRowSegmentLSpecial.cxx:269 AliMpRowSegmentLSpecial.cxx:270 AliMpRowSegmentLSpecial.cxx:271 AliMpRowSegmentLSpecial.cxx:272 AliMpRowSegmentLSpecial.cxx:273 AliMpRowSegmentLSpecial.cxx:274 AliMpRowSegmentLSpecial.cxx:275 AliMpRowSegmentLSpecial.cxx:276 AliMpRowSegmentLSpecial.cxx:277 AliMpRowSegmentLSpecial.cxx:278 AliMpRowSegmentLSpecial.cxx:279 AliMpRowSegmentLSpecial.cxx:280 AliMpRowSegmentLSpecial.cxx:281 AliMpRowSegmentLSpecial.cxx:282 AliMpRowSegmentLSpecial.cxx:283 AliMpRowSegmentLSpecial.cxx:284 AliMpRowSegmentLSpecial.cxx:285 AliMpRowSegmentLSpecial.cxx:286 AliMpRowSegmentLSpecial.cxx:287 AliMpRowSegmentLSpecial.cxx:288 AliMpRowSegmentLSpecial.cxx:289 AliMpRowSegmentLSpecial.cxx:290 AliMpRowSegmentLSpecial.cxx:291 AliMpRowSegmentLSpecial.cxx:292 AliMpRowSegmentLSpecial.cxx:293 AliMpRowSegmentLSpecial.cxx:294 AliMpRowSegmentLSpecial.cxx:295 AliMpRowSegmentLSpecial.cxx:296 AliMpRowSegmentLSpecial.cxx:297 AliMpRowSegmentLSpecial.cxx:298 AliMpRowSegmentLSpecial.cxx:299 AliMpRowSegmentLSpecial.cxx:300 AliMpRowSegmentLSpecial.cxx:301 AliMpRowSegmentLSpecial.cxx:302 AliMpRowSegmentLSpecial.cxx:303 AliMpRowSegmentLSpecial.cxx:304 AliMpRowSegmentLSpecial.cxx:305 AliMpRowSegmentLSpecial.cxx:306 AliMpRowSegmentLSpecial.cxx:307 AliMpRowSegmentLSpecial.cxx:308 AliMpRowSegmentLSpecial.cxx:309 AliMpRowSegmentLSpecial.cxx:310 AliMpRowSegmentLSpecial.cxx:311 AliMpRowSegmentLSpecial.cxx:312 AliMpRowSegmentLSpecial.cxx:313 AliMpRowSegmentLSpecial.cxx:314 AliMpRowSegmentLSpecial.cxx:315 AliMpRowSegmentLSpecial.cxx:316 AliMpRowSegmentLSpecial.cxx:317 AliMpRowSegmentLSpecial.cxx:318 AliMpRowSegmentLSpecial.cxx:319