29 #include "AliCodeTimer.h"
44 #include "Riostream.h"
48 #include "TGeoMatrix.h"
50 #include "TObjArray.h"
51 #include "TPolyLine.h"
63 fTransformations(0x0),
77 fTransformations = GenerateTransformations(explodedView);
86 manus->SetOwner(kFALSE);
87 GenerateAllContours(*manus);
132 AliCodeTimerAuto(
"",0);
141 TIter next(&manuContours);
145 while ( ( contour = static_cast<AliMUONContour*>(next()) ) )
149 TString key(contour->GetName());
151 for ( Int_t i = start; i < s->GetLast(); ++i )
153 TMap* m =
static_cast<TMap*
>(mapArray->At(i));
157 if ( i > mapArray->GetSize() ) mapArray->Expand(i);
158 mapArray->AddAt(m,i);
161 for ( Int_t k = 0; k <= i; ++k )
163 TObjString* str =
static_cast<TObjString*
>(s->At(k));
164 parent += str->String();
165 if ( k < i ) parent +=
"/";
167 TString child(parent);
169 child +=
static_cast<TObjString*
>(s->At(i+1))->String();
175 m->Add(
new TObjString(parent.Data()),ma);
177 TPair* p =
static_cast<TPair*
>(ma->FindObject(child.Data()));
180 ma->Add(
new TObjString(child.Data()));
198 AliCodeTimerAuto(
"",0);
209 TIter nextContour(&manuContours);
213 while ( ( contour = static_cast<AliMUONContour*>(nextContour()) ) )
220 for ( Int_t i = mapArray->GetLast(); i >= 1; --i )
224 TMap* a =
static_cast<TMap*
>(mapArray->At(i));
227 while ( ( str = static_cast<TObjString*>(next3()) ) )
233 subcontours.SetOwner(kFALSE);
234 while ( ( k = static_cast<TObjString*>(next4()) ) )
239 subcontours.
Add(contour);
243 AliError(Form(
"Did not find contour %s",k->String().Data()));
248 contour = maker.
MergeContour(subcontours,str->String().Data());
255 AliError(Form(
"ERROR : could not merge into %s",str->String().Data()));
262 AliError(Form(
"ERROR : area of contour %s is invalid",str->String().Data()));
268 fAllContourMap->Add(
new TObjString(str->String().Data()),contour);
283 AliCodeTimerAuto(
"",0);
290 cout <<
"ERROR : cannot get geometry !" << endl;
305 Double_t* translation = matrix->GetTranslation();
306 Double_t xscale = 1.0;
307 Double_t yscale = 1.5;
308 Double_t shift = 5.0;
312 translation[0] *= xscale;
313 translation[1] *= yscale;
317 Double_t xshift[] = { shift, -shift, -shift, shift };
318 Double_t yshift[] = { shift, shift, -shift, -shift };
319 Int_t ishift = detElemId % 100;
321 translation[0] += xshift[ishift];
322 translation[1] += yshift[ishift];
324 matrix->SetTranslation(translation);
326 transformations->
Add(detElemId,matrix);
329 return transformations;
348 cout << Form(
"Contour map : collisions = %5.3f size = %d capacity = %d",
356 if ( sopt.Contains(
"ALL") || sopt.Contains(
"FULL") )
The iterator over detection elements.
AliMUONContour * MergeContour(const TObjArray &contours, const char *name=0x0) const
virtual ~AliMUONContourHandler()
TObjArray * CreateContourList(const TObjArray &manuContours)
Int_t CurrentDEId() const
void Print(Option_t *opt="") const
TMap * fAllContourMap
all (i.e. manus, buspatches, detection elements, etc..) contours
Bool_t Adopt(AliMUONContour *contour)
TObjArray * fAllContourArray
all contours, ordered by hierarchy level
void Add(const AliMUONPolygon &polygon)
static AliMp::StationType GetStationType(Int_t detElemId)
Maker of AliMUONContour objects for all the tracker manus.
const TGeoHMatrix * GetGlobalTransformation() const
Return the detection element transformation wrt world.
Holder for MUON tracker contours.
void Add(Int_t keyFirst, Int_t keySecond, TObject *object)
AliMUONContour * GetContour(const char *contourname) const
TObjArray * GenerateManuContours(Bool_t stopAtError=kFALSE)
Creator/merger of AliMUONContour objects.
void GenerateAllContours(const TObjArray &manuContours)
Bool_t IsValid() const
Return validity.
Class for storing detection element transformations.
AliMpExMap * fTransformations
transformations used to go from local to global coordinates
Helper class making Root persistent TExMap.
AliMpExMap * GenerateTransformations(Bool_t exploded)