1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15 //-----------------------------------------------------------------------------
16 /// \class AliMUONSurveyDetElem
17 /// Class for the survey processing of the ALICE DiMuon spectrometer
19 /// This object provides the methods specific to the detection elements
21 /// \author Javier Castillo
22 //-----------------------------------------------------------------------------
24 #include "TGeoMatrix.h"
27 #include "AliSurveyObj.h"
29 #include "AliMUONSurveyChamber.h"
30 #include "AliMUONSurveyDetElem.h"
33 ClassImp(AliMUONSurveyDetElem)
36 AliMUONSurveyDetElem::AliMUONSurveyDetElem(Int_t lDetElemId)
38 , fDetElemId(lDetElemId)
41 /// Constructor with detection element id
44 AliMUONSurveyDetElem::AliMUONSurveyDetElem(Int_t lDetElemId, AliMUONSurveyChamber *lSurveyChamber)
45 : AliMUONSurveyObj() /// Constructor with mother chamber provided
46 , fDetElemId(lDetElemId)
47 , fSurveyChamber(lSurveyChamber)
49 /// Constructor with mother chamber provided
52 AliMUONSurveyDetElem::~AliMUONSurveyDetElem() {
56 Int_t AliMUONSurveyDetElem::AddStickerTargets(TObjArray *pArray, TString stBaseName, Int_t lTargetMax) {
57 /// Add a maximum of lTargetMax sticker targets with stBaseName from pArray of targets
58 return AliMUONSurveyObj::AddStickerTargets(pArray, stBaseName, lTargetMax);
61 Int_t AliMUONSurveyDetElem::AddStickerTargets(TString stBaseName, Int_t lTargetMax) {
62 /// Add a maximum of lTargetMax sticker targets with stBaseName from internal SurveyObj
63 if (!fSurveyChamber) {
64 AliError("Pointer to mother chamber has not been set!");
67 if (!fSurveyChamber->GetSurveyObj() || !fSurveyChamber->GetSurveyObj()->GetData()) {
68 AliError("Survey data is missing!");
71 return AddStickerTargets(fSurveyChamber->GetSurveyObj()->GetData(),stBaseName,lTargetMax);
74 Int_t AliMUONSurveyDetElem::AddGButtonTargets(TObjArray *pArray, TString stBaseName, Int_t lTargetMax) {
75 /// Add a maximum of lTargetMax global button targets with stBaseName from pArray of targets
76 return AliMUONSurveyObj::AddGButtonTargets(pArray, stBaseName, lTargetMax);
79 Int_t AliMUONSurveyDetElem::AddGButtonTargets(TString stBaseName, Int_t lTargetMax) {
80 /// Add a maximum of lTargetMax sticker targets with stBaseName from internal SurveyObj
81 if (!fSurveyChamber) {
82 AliError("Pointer to mother chamber has not been set!");
85 if (!fSurveyChamber->GetSurveyObj() || !fSurveyChamber->GetSurveyObj()->GetData()) {
86 AliError("Survey data is missing!");
89 return AddGButtonTargets(fSurveyChamber->GetSurveyObj()->GetData(),stBaseName,lTargetMax);
92 void AliMUONSurveyDetElem::SetLocalTransformation(TGeoCombiTrans *localTrf, Bool_t ownerLocalTrf) {
93 /// Set the geometry transformation of this detection element
94 AliMUONSurveyObj::SetLocalTransformation(localTrf,ownerLocalTrf);
95 if (!fSurveyChamber) {
96 AliWarning("Pointer to mother chamber has not been set!");
97 AliMUONSurveyObj::SetBaseTransformation(localTrf,ownerLocalTrf);
99 if (fSurveyChamber->GetLocalTrf()){
100 if (fSurveyChamber->GetAlignTrf()){
101 AliMUONSurveyObj::SetBaseTransformation(new TGeoCombiTrans((*(fSurveyChamber->GetLocalTrf()))*(*(fSurveyChamber->GetAlignTrf()))*(*localTrf)),kTRUE);
103 AliWarning("Mother chamber has not been aligned yet!");
104 AliMUONSurveyObj::SetBaseTransformation(new TGeoCombiTrans((*(fSurveyChamber->GetLocalTrf()))*(*localTrf)),kTRUE);
107 AliWarning("Mother chamber has no local transformation");
108 AliMUONSurveyObj::SetBaseTransformation(localTrf,ownerLocalTrf);
113 void AliMUONSurveyDetElem::PrintLocalTrf() {
114 /// Print the local transformation
115 printf("DetElem%d Th",fDetElemId);
116 AliMUONSurveyObj::PrintLocalTrf();
119 void AliMUONSurveyDetElem::PrintAlignTrf() {
120 /// Print the alignment transformation
121 printf("DetElem%d d",fDetElemId);
122 AliMUONSurveyObj::PrintAlignTrf();