#include "AliMUONManuContourMaker.h"
#include "AliCodeTimer.h"
#include "AliLog.h"
#include "AliMUONContour.h"
#include "AliMUONContourMaker.h"
#include "AliMUONPolygon.h"
#include "AliMpCathodType.h"
#include "AliMpConnection.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
#include "AliMpDEManager.h"
#include "AliMpIntPair.h"
#include "AliMpMotifPosition.h"
#include "AliMpMotifType.h"
#include "AliMpManuIterator.h"
#include "AliMpPlaneType.h"
#include "AliMpSegmentation.h"
#include "AliMpUID.h"
#include "AliMpVMotif.h"
#include "AliMpVSegmentation.h"
#include "TGeoMatrix.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "TString.h"
#include "TVector2.h"
ClassImp(AliMUONManuContourMaker)
AliMUONManuContourMaker::AliMUONManuContourMaker(AliMpExMap* deTransformations)
: TObject(), fDETransformations(deTransformations), fLocalManuContours(222,1)
{
fLocalManuContours.SetOwnerKeyValue(kTRUE,kTRUE);
}
AliMUONManuContourMaker::~AliMUONManuContourMaker()
{
}
AliMUONContour*
AliMUONManuContourMaker::CreateManuContour(Int_t detElemId, Int_t manuId, const char* name) const
{
AliCodeTimerAuto("",0);
TString sname(name);
if ( sname.Length()==0 )
{
sname = ManuPathName(detElemId,manuId);
}
const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(detElemId,manuId);
const AliMpMotifPosition* motifPos = seg->MotifPosition(manuId);
AliMUONContour* contour = CreateMotifContour(*motifPos);
if (!contour)
{
AliError(Form("Could not build contour %s",sname.Data()));
return 0x0;
}
contour->SetName(sname.Data());
contour->Offset(motifPos->GetPositionX()-seg->GetPositionX(),
motifPos->GetPositionY()-seg->GetPositionY());
TGeoHMatrix* matrix = 0x0;
if ( fDETransformations )
{
matrix = static_cast<TGeoHMatrix*>(fDETransformations->GetValue(detElemId));
if ( matrix ) contour->Transform(*matrix);
}
return contour;
}
AliMUONContour*
AliMUONManuContourMaker::CreateMotifContour(const AliMpMotifPosition& motifPosition) const
{
AliCodeTimerAuto("",0);
TString mpName(NameIt(motifPosition));
AliMUONContour* contour = static_cast<AliMUONContour*>(fLocalManuContours.GetValue(mpName.Data()));
if ( contour )
{
return static_cast<AliMUONContour*>(contour->Clone());
}
TObjArray polygons(AliMpConstants::ManuNofChannels());
polygons.SetOwner(kTRUE);
AliMpVMotif* motif = motifPosition.GetMotif();
AliMpMotifType* motifType = motif->GetMotifType();
if ( motifType->IsFull() )
{
polygons.Add(new AliMUONPolygon(0.0,0.0,motif->DimensionX(),motif->DimensionY()));
}
else
{
for ( Int_t i = 0; i <= AliMpConstants::ManuNofChannels(); ++i )
{
AliMpConnection* connection = motifType->FindConnectionByGassiNum(i);
if ( connection )
{
Int_t ix = connection->GetLocalIx();
Int_t iy = connection->GetLocalIy();
Double_t x,y,dx,dy;
motif->GetPadDimensionsByIndices(ix,iy,dx,dy);
motif->PadPositionLocal(ix,iy,x,y);
AliMUONPolygon* pol = new AliMUONPolygon(x,y,dx,dy);
polygons.Add(pol);
}
}
}
AliMUONContourMaker maker;
contour = maker.CreateContour(polygons);
if (!contour || !contour->IsValid() )
{
AliError(Form("Failed to properly create contour %s contour = %p",mpName.Data(),contour));
if ( contour )
{
AliError(Form("nofVertices=%d area.isvalid=%d",contour->NumberOfVertices(),contour->Area().IsValid()));
StdoutToAliError(contour->Area().Print(););
}
delete contour;
return 0x0;
}
{
AliCodeTimerAuto("localmanucontour.add",1);
fLocalManuContours.Add(new TObjString(mpName),contour);
}
return static_cast<AliMUONContour*>(contour->Clone());
}
TObjArray*
AliMUONManuContourMaker::GenerateManuContours(Bool_t stopAtError)
{
AliCodeTimerAuto("",0);
TObjArray* manuContours = new TObjArray;
manuContours->SetOwner(kTRUE);
AliMpManuIterator it;
Int_t detElemId, manuId;
Int_t nmanus(0);
Int_t nok(0);
while ( it.Next(detElemId,manuId) )
{
++nmanus;
AliMUONContour* contour = CreateManuContour(detElemId,manuId);
if (contour)
{
manuContours->Add(contour);
}
else
{
if ( stopAtError )
{
break;
}
}
++nok;
}
AliDebug(1,Form("%d manus. %d contours successfully created",nmanus,nok));
return manuContours;
}
TString
AliMUONManuContourMaker::NameIt(const AliMpMotifPosition& motifPosition) const
{
AliMpVMotif* motif = motifPosition.GetMotif();
TString name(Form("%s",motif->GetID().Data()));
for ( Int_t i = 0; i < motif->GetNofPadDimensions(); ++i )
{
name += Form("/%7.3f-%7.3f:",motif->GetPadDimensionX(i),motif->GetPadDimensionY(i));
}
return name;
}
TString
AliMUONManuContourMaker::ManuPathName(Int_t detElemId, Int_t manuId, Bool_t withCathodeName)
{
AliMp::PlaneType planeType;
if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) )
{
planeType = AliMp::kNonBendingPlane;
}
else
{
planeType = AliMp::kBendingPlane;
}
AliMp::CathodType cathodeType = AliMpDEManager::GetCathod(detElemId,planeType);
Int_t chamberId = AliMpDEManager::GetChamberId(detElemId);
Int_t stationId = chamberId/2;
Int_t busPatchId = AliMpDDLStore::Instance()->GetBusPatchId(detElemId, manuId);
AliMpUID id(cathodeType,stationId,chamberId,detElemId,busPatchId,manuId);
if ( withCathodeName ) return id.PathName();
TString name(id.PathName());
name.ReplaceAll("Cathode0/","");
name.ReplaceAll("Cathode1/","");
return name;
}
AliMUONManuContourMaker.cxx:1 AliMUONManuContourMaker.cxx:2 AliMUONManuContourMaker.cxx:3 AliMUONManuContourMaker.cxx:4 AliMUONManuContourMaker.cxx:5 AliMUONManuContourMaker.cxx:6 AliMUONManuContourMaker.cxx:7 AliMUONManuContourMaker.cxx:8 AliMUONManuContourMaker.cxx:9 AliMUONManuContourMaker.cxx:10 AliMUONManuContourMaker.cxx:11 AliMUONManuContourMaker.cxx:12 AliMUONManuContourMaker.cxx:13 AliMUONManuContourMaker.cxx:14 AliMUONManuContourMaker.cxx:15 AliMUONManuContourMaker.cxx:16 AliMUONManuContourMaker.cxx:17 AliMUONManuContourMaker.cxx:18 AliMUONManuContourMaker.cxx:19 AliMUONManuContourMaker.cxx:20 AliMUONManuContourMaker.cxx:21 AliMUONManuContourMaker.cxx:22 AliMUONManuContourMaker.cxx:23 AliMUONManuContourMaker.cxx:24 AliMUONManuContourMaker.cxx:25 AliMUONManuContourMaker.cxx:26 AliMUONManuContourMaker.cxx:27 AliMUONManuContourMaker.cxx:28 AliMUONManuContourMaker.cxx:29 AliMUONManuContourMaker.cxx:30 AliMUONManuContourMaker.cxx:31 AliMUONManuContourMaker.cxx:32 AliMUONManuContourMaker.cxx:33 AliMUONManuContourMaker.cxx:34 AliMUONManuContourMaker.cxx:35 AliMUONManuContourMaker.cxx:36 AliMUONManuContourMaker.cxx:37 AliMUONManuContourMaker.cxx:38 AliMUONManuContourMaker.cxx:39 AliMUONManuContourMaker.cxx:40 AliMUONManuContourMaker.cxx:41 AliMUONManuContourMaker.cxx:42 AliMUONManuContourMaker.cxx:43 AliMUONManuContourMaker.cxx:44 AliMUONManuContourMaker.cxx:45 AliMUONManuContourMaker.cxx:46 AliMUONManuContourMaker.cxx:47 AliMUONManuContourMaker.cxx:48 AliMUONManuContourMaker.cxx:49 AliMUONManuContourMaker.cxx:50 AliMUONManuContourMaker.cxx:51 AliMUONManuContourMaker.cxx:52 AliMUONManuContourMaker.cxx:53 AliMUONManuContourMaker.cxx:54 AliMUONManuContourMaker.cxx:55 AliMUONManuContourMaker.cxx:56 AliMUONManuContourMaker.cxx:57 AliMUONManuContourMaker.cxx:58 AliMUONManuContourMaker.cxx:59 AliMUONManuContourMaker.cxx:60 AliMUONManuContourMaker.cxx:61 AliMUONManuContourMaker.cxx:62 AliMUONManuContourMaker.cxx:63 AliMUONManuContourMaker.cxx:64 AliMUONManuContourMaker.cxx:65 AliMUONManuContourMaker.cxx:66 AliMUONManuContourMaker.cxx:67 AliMUONManuContourMaker.cxx:68 AliMUONManuContourMaker.cxx:69 AliMUONManuContourMaker.cxx:70 AliMUONManuContourMaker.cxx:71 AliMUONManuContourMaker.cxx:72 AliMUONManuContourMaker.cxx:73 AliMUONManuContourMaker.cxx:74 AliMUONManuContourMaker.cxx:75 AliMUONManuContourMaker.cxx:76 AliMUONManuContourMaker.cxx:77 AliMUONManuContourMaker.cxx:78 AliMUONManuContourMaker.cxx:79 AliMUONManuContourMaker.cxx:80 AliMUONManuContourMaker.cxx:81 AliMUONManuContourMaker.cxx:82 AliMUONManuContourMaker.cxx:83 AliMUONManuContourMaker.cxx:84 AliMUONManuContourMaker.cxx:85 AliMUONManuContourMaker.cxx:86 AliMUONManuContourMaker.cxx:87 AliMUONManuContourMaker.cxx:88 AliMUONManuContourMaker.cxx:89 AliMUONManuContourMaker.cxx:90 AliMUONManuContourMaker.cxx:91 AliMUONManuContourMaker.cxx:92 AliMUONManuContourMaker.cxx:93 AliMUONManuContourMaker.cxx:94 AliMUONManuContourMaker.cxx:95 AliMUONManuContourMaker.cxx:96 AliMUONManuContourMaker.cxx:97 AliMUONManuContourMaker.cxx:98 AliMUONManuContourMaker.cxx:99 AliMUONManuContourMaker.cxx:100 AliMUONManuContourMaker.cxx:101 AliMUONManuContourMaker.cxx:102 AliMUONManuContourMaker.cxx:103 AliMUONManuContourMaker.cxx:104 AliMUONManuContourMaker.cxx:105 AliMUONManuContourMaker.cxx:106 AliMUONManuContourMaker.cxx:107 AliMUONManuContourMaker.cxx:108 AliMUONManuContourMaker.cxx:109 AliMUONManuContourMaker.cxx:110 AliMUONManuContourMaker.cxx:111 AliMUONManuContourMaker.cxx:112 AliMUONManuContourMaker.cxx:113 AliMUONManuContourMaker.cxx:114 AliMUONManuContourMaker.cxx:115 AliMUONManuContourMaker.cxx:116 AliMUONManuContourMaker.cxx:117 AliMUONManuContourMaker.cxx:118 AliMUONManuContourMaker.cxx:119 AliMUONManuContourMaker.cxx:120 AliMUONManuContourMaker.cxx:121 AliMUONManuContourMaker.cxx:122 AliMUONManuContourMaker.cxx:123 AliMUONManuContourMaker.cxx:124 AliMUONManuContourMaker.cxx:125 AliMUONManuContourMaker.cxx:126 AliMUONManuContourMaker.cxx:127 AliMUONManuContourMaker.cxx:128 AliMUONManuContourMaker.cxx:129 AliMUONManuContourMaker.cxx:130 AliMUONManuContourMaker.cxx:131 AliMUONManuContourMaker.cxx:132 AliMUONManuContourMaker.cxx:133 AliMUONManuContourMaker.cxx:134 AliMUONManuContourMaker.cxx:135 AliMUONManuContourMaker.cxx:136 AliMUONManuContourMaker.cxx:137 AliMUONManuContourMaker.cxx:138 AliMUONManuContourMaker.cxx:139 AliMUONManuContourMaker.cxx:140 AliMUONManuContourMaker.cxx:141 AliMUONManuContourMaker.cxx:142 AliMUONManuContourMaker.cxx:143 AliMUONManuContourMaker.cxx:144 AliMUONManuContourMaker.cxx:145 AliMUONManuContourMaker.cxx:146 AliMUONManuContourMaker.cxx:147 AliMUONManuContourMaker.cxx:148 AliMUONManuContourMaker.cxx:149 AliMUONManuContourMaker.cxx:150 AliMUONManuContourMaker.cxx:151 AliMUONManuContourMaker.cxx:152 AliMUONManuContourMaker.cxx:153 AliMUONManuContourMaker.cxx:154 AliMUONManuContourMaker.cxx:155 AliMUONManuContourMaker.cxx:156 AliMUONManuContourMaker.cxx:157 AliMUONManuContourMaker.cxx:158 AliMUONManuContourMaker.cxx:159 AliMUONManuContourMaker.cxx:160 AliMUONManuContourMaker.cxx:161 AliMUONManuContourMaker.cxx:162 AliMUONManuContourMaker.cxx:163 AliMUONManuContourMaker.cxx:164 AliMUONManuContourMaker.cxx:165 AliMUONManuContourMaker.cxx:166 AliMUONManuContourMaker.cxx:167 AliMUONManuContourMaker.cxx:168 AliMUONManuContourMaker.cxx:169 AliMUONManuContourMaker.cxx:170 AliMUONManuContourMaker.cxx:171 AliMUONManuContourMaker.cxx:172 AliMUONManuContourMaker.cxx:173 AliMUONManuContourMaker.cxx:174 AliMUONManuContourMaker.cxx:175 AliMUONManuContourMaker.cxx:176 AliMUONManuContourMaker.cxx:177 AliMUONManuContourMaker.cxx:178 AliMUONManuContourMaker.cxx:179 AliMUONManuContourMaker.cxx:180 AliMUONManuContourMaker.cxx:181 AliMUONManuContourMaker.cxx:182 AliMUONManuContourMaker.cxx:183 AliMUONManuContourMaker.cxx:184 AliMUONManuContourMaker.cxx:185 AliMUONManuContourMaker.cxx:186 AliMUONManuContourMaker.cxx:187 AliMUONManuContourMaker.cxx:188 AliMUONManuContourMaker.cxx:189 AliMUONManuContourMaker.cxx:190 AliMUONManuContourMaker.cxx:191 AliMUONManuContourMaker.cxx:192 AliMUONManuContourMaker.cxx:193 AliMUONManuContourMaker.cxx:194 AliMUONManuContourMaker.cxx:195 AliMUONManuContourMaker.cxx:196 AliMUONManuContourMaker.cxx:197 AliMUONManuContourMaker.cxx:198 AliMUONManuContourMaker.cxx:199 AliMUONManuContourMaker.cxx:200 AliMUONManuContourMaker.cxx:201 AliMUONManuContourMaker.cxx:202 AliMUONManuContourMaker.cxx:203 AliMUONManuContourMaker.cxx:204 AliMUONManuContourMaker.cxx:205 AliMUONManuContourMaker.cxx:206 AliMUONManuContourMaker.cxx:207 AliMUONManuContourMaker.cxx:208 AliMUONManuContourMaker.cxx:209 AliMUONManuContourMaker.cxx:210 AliMUONManuContourMaker.cxx:211 AliMUONManuContourMaker.cxx:212 AliMUONManuContourMaker.cxx:213 AliMUONManuContourMaker.cxx:214 AliMUONManuContourMaker.cxx:215 AliMUONManuContourMaker.cxx:216 AliMUONManuContourMaker.cxx:217 AliMUONManuContourMaker.cxx:218 AliMUONManuContourMaker.cxx:219 AliMUONManuContourMaker.cxx:220 AliMUONManuContourMaker.cxx:221 AliMUONManuContourMaker.cxx:222 AliMUONManuContourMaker.cxx:223 AliMUONManuContourMaker.cxx:224 AliMUONManuContourMaker.cxx:225 AliMUONManuContourMaker.cxx:226 AliMUONManuContourMaker.cxx:227 AliMUONManuContourMaker.cxx:228 AliMUONManuContourMaker.cxx:229 AliMUONManuContourMaker.cxx:230 AliMUONManuContourMaker.cxx:231 AliMUONManuContourMaker.cxx:232 AliMUONManuContourMaker.cxx:233 AliMUONManuContourMaker.cxx:234 AliMUONManuContourMaker.cxx:235 AliMUONManuContourMaker.cxx:236 AliMUONManuContourMaker.cxx:237 AliMUONManuContourMaker.cxx:238 AliMUONManuContourMaker.cxx:239 AliMUONManuContourMaker.cxx:240 AliMUONManuContourMaker.cxx:241 AliMUONManuContourMaker.cxx:242 AliMUONManuContourMaker.cxx:243 AliMUONManuContourMaker.cxx:244 AliMUONManuContourMaker.cxx:245 AliMUONManuContourMaker.cxx:246 AliMUONManuContourMaker.cxx:247 AliMUONManuContourMaker.cxx:248 AliMUONManuContourMaker.cxx:249 AliMUONManuContourMaker.cxx:250 AliMUONManuContourMaker.cxx:251 AliMUONManuContourMaker.cxx:252 AliMUONManuContourMaker.cxx:253 AliMUONManuContourMaker.cxx:254 AliMUONManuContourMaker.cxx:255 AliMUONManuContourMaker.cxx:256 AliMUONManuContourMaker.cxx:257 AliMUONManuContourMaker.cxx:258 AliMUONManuContourMaker.cxx:259 AliMUONManuContourMaker.cxx:260 AliMUONManuContourMaker.cxx:261 AliMUONManuContourMaker.cxx:262 AliMUONManuContourMaker.cxx:263 AliMUONManuContourMaker.cxx:264 AliMUONManuContourMaker.cxx:265 AliMUONManuContourMaker.cxx:266 AliMUONManuContourMaker.cxx:267 AliMUONManuContourMaker.cxx:268 AliMUONManuContourMaker.cxx:269 AliMUONManuContourMaker.cxx:270 AliMUONManuContourMaker.cxx:271 AliMUONManuContourMaker.cxx:272 AliMUONManuContourMaker.cxx:273 AliMUONManuContourMaker.cxx:274 AliMUONManuContourMaker.cxx:275 AliMUONManuContourMaker.cxx:276 AliMUONManuContourMaker.cxx:277 AliMUONManuContourMaker.cxx:278 AliMUONManuContourMaker.cxx:279 AliMUONManuContourMaker.cxx:280 AliMUONManuContourMaker.cxx:281 AliMUONManuContourMaker.cxx:282 AliMUONManuContourMaker.cxx:283 AliMUONManuContourMaker.cxx:284 AliMUONManuContourMaker.cxx:285 AliMUONManuContourMaker.cxx:286 AliMUONManuContourMaker.cxx:287 AliMUONManuContourMaker.cxx:288 AliMUONManuContourMaker.cxx:289 AliMUONManuContourMaker.cxx:290 AliMUONManuContourMaker.cxx:291