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