Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / AliMUON.cxx
CommitLineData
4c039060 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
4c039060 15
88cb7938 16/* $Id$ */
17
3d1463c8 18//-----------------------------------------------------------------------------
d19b6003 19// Class AliMUON
20// ------------------
21// AliDetector class for MUON subsystem
22// providing simulation data management
3d1463c8 23//-----------------------------------------------------------------------------
fe4da5cc 24
88cb7938 25#include "Riostream.h"
26
27#include <AliPDG.h>
a897a37a 28#include <TBRIK.h>
88cb7938 29#include <TCanvas.h>
30#include <TDirectory.h>
31#include <TFile.h>
94de3818 32#include <TGeometry.h>
88cb7938 33#include <TMinuit.h>
fe4da5cc 34#include <TNode.h>
88cb7938 35#include <TNtuple.h>
fe4da5cc 36#include <TObjArray.h>
88cb7938 37#include <TObject.h>
38#include <TObjectTable.h>
39#include <TPad.h>
a897a37a 40#include <TParticle.h>
41#include <TROOT.h>
88cb7938 42#include <TRandom.h>
43#include <TRotMatrix.h>
44#include <TTUBE.h>
a9e2aefa 45#include <TTUBE.h>
88cb7938 46#include <TTree.h>
47#include <TVector.h>
48#include <TVirtualMC.h>
fe4da5cc 49
d4bb94a1 50//#include "AliHeader.h"
88cb7938 51#include "AliLoader.h"
92c23b09 52#include "AliCDBManager.h"
dbb4e169 53#include "AliRunDigitizer.h"
307d9d04 54#include "AliMC.h"
0014fbe8 55#include "AliRun.h"
56#include "AliRawDataHeaderSim.h"
fe4da5cc 57#include "AliMUON.h"
88cb7938 58#include "AliMUONChamberTrigger.h"
88cb7938 59#include "AliMUONConstants.h"
ffd9faa2 60#include "AliMUONHit.h"
504d0837 61#include "AliMUONGeometry.h"
62#include "AliMUONGeometryTransformer.h"
d4bb94a1 63#include "AliMUONGeometryBuilder.h"
e118b27e 64#include "AliMUONCommonGeometryBuilder.h"
d1cd2474 65#include "AliMUONVGeometryBuilder.h"
a19e2543 66#include "AliMUONRawWriter.h"
8c343c7c 67#include "AliLog.h"
a9e2aefa 68
68585390 69#include "AliMUONSDigitizerV2.h"
70#include "AliMUONDigitizerV3.h"
241560c2 71#include "AliMUONDigitMaker.h"
92c23b09 72#include "AliMUONCalibrationData.h"
68585390 73
d5609cfc 74#include "AliMUONSt1GeometryBuilderV2.h"
75#include "AliMUONSt2GeometryBuilderV2.h"
76#include "AliMUONSlatGeometryBuilder.h"
77#include "AliMUONTriggerGeometryBuilder.h"
78
7435e1f8 79#include "AliMUONDigitStoreV1.h"
80#include "AliMUONVTriggerStore.h"
81#include "AliMUONHitStoreV1.h"
82
a9e2aefa 83// Defaults parameters for Z positions of chambers
84// taken from values for "stations" in AliMUON::AliMUON
85// const Float_t zch[7]={528, 690., 975., 1249., 1449., 1610, 1710.};
86// and from array "dstation" in AliMUONv1::CreateGeometry
87// Float_t dstation[5]={20., 20., 20, 20., 20.};
88// for tracking chambers,
89// according to (Z1 = zch - dstation) and (Z2 = zch + dstation)
90// for the first and second chambers in the station, respectively,
91// and from "DTPLANES" in AliMUONv1::CreateGeometry
92// const Float_t DTPLANES = 15.;
93// for trigger chambers,
94// according to (Z1 = zch) and (Z2 = zch + DTPLANES)
95// for the first and second chambers in the station, respectively
fe4da5cc 96
13985652 97/// \cond CLASSIMP
98ClassImp(AliMUON)
99/// \endcond
30178c30 100
ce3f5e87 101//__________________________________________________________________
fe4da5cc 102AliMUON::AliMUON()
30178c30 103 : AliDetector(),
104 fNCh(0),
105 fNTrackingCh(0),
30178c30 106 fSplitLevel(0),
107 fChambers(0),
d4bb94a1 108 fGeometryBuilder(0),
30178c30 109 fAccCut(kFALSE),
110 fAccMin(0.),
111 fAccMax(0.),
112 fMaxStepGas(0.),
113 fMaxStepAlu(0.),
114 fMaxDestepGas(0.),
115 fMaxDestepAlu(0.),
116 fMaxIterPad(0),
ced309a5 117 fCurIterPad(0),
68585390 118 fTriggerScalerEvent(kFALSE),
e93b11d0 119 fTriggerResponseV1(kFALSE),
120 fTriggerCoinc44(0),
afb3ccf0 121 fTriggerEffCells(0),
8c0b5e70 122 fDigitizerWithNoise(1),
5fe36481 123 fIsTailEffect(kTRUE),
241560c2 124 fRawWriter(0x0),
7435e1f8 125 fDigitMaker(0x0),
5ee595ac 126 fHitStore(0x0),
92c23b09 127 fDigitStoreConcreteClassName(),
128 fCalibrationData(0x0)
fe4da5cc 129{
d19b6003 130/// Default Constructor
131
132 AliDebug(1,Form("default (empty) ctor this=%p",this));
1bd26093 133 fIshunt = 0;
fe4da5cc 134}
30178c30 135
ce3f5e87 136//__________________________________________________________________
9bf406e1 137AliMUON::AliMUON(const char *name, const char* title)
138 : AliDetector(name, title),
30178c30 139 fNCh(AliMUONConstants::NCh()),
140 fNTrackingCh(AliMUONConstants::NTrackingCh()),
30178c30 141 fSplitLevel(0),
142 fChambers(0),
d4bb94a1 143 fGeometryBuilder(0),
30178c30 144 fAccCut(kFALSE),
145 fAccMin(0.),
146 fAccMax(0.),
147 fMaxStepGas(0.1),
148 fMaxStepAlu(0.1),
149 fMaxDestepGas(-1), // Negatives values are ignored by geant3 CONS200
150 fMaxDestepAlu(-1), // in the calculation of the tracking parameters
151 fMaxIterPad(0),
ced309a5 152 fCurIterPad(0),
e93b11d0 153 fTriggerScalerEvent(kFALSE),
154 fTriggerResponseV1(kFALSE),
155 fTriggerCoinc44(0),
afb3ccf0 156 fTriggerEffCells(0),
8c0b5e70 157 fDigitizerWithNoise(1),
5fe36481 158 fIsTailEffect(kTRUE),
241560c2 159 fRawWriter(0x0),
7435e1f8 160 fDigitMaker(new AliMUONDigitMaker),
5ee595ac 161 fHitStore(0x0),
92c23b09 162 fDigitStoreConcreteClassName("AliMUONDigitStoreV2S"),
163 fCalibrationData()
164
fe4da5cc 165{
92c23b09 166 /// Standard constructor
d19b6003 167
168 AliDebug(1,Form("ctor this=%p",this));
30178c30 169 fIshunt = 0;
92c23b09 170
e939a978 171 //PH SetMarkerColor(kRed);//
e118b27e 172
173 // Geometry builder
174 fGeometryBuilder = new AliMUONGeometryBuilder(this);
175
176 // Common geometry definitions
177 fGeometryBuilder
178 ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
92c23b09 179
d5609cfc 180 // By default, add also all the needed geometry builders.
181 // If you want to change this from outside, please use ResetGeometryBuilder
182 // method, followed by AddGeometryBuilder ones.
92c23b09 183
d5609cfc 184 AddGeometryBuilder(new AliMUONSt1GeometryBuilderV2(this));
185 AddGeometryBuilder(new AliMUONSt2GeometryBuilderV2(this));
186 AddGeometryBuilder(new AliMUONSlatGeometryBuilder(this));
187 AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(this));
188
189 //
190 // Creating List of Chambers
a9e2aefa 191 Int_t ch;
f665c1ea 192 fChambers = new TObjArray(AliMUONConstants::NCh());
7435e1f8 193 fChambers->SetOwner(kTRUE);
194
a9e2aefa 195 // Loop over stations
f665c1ea 196 for (Int_t st = 0; st < AliMUONConstants::NCh() / 2; st++) {
a9e2aefa 197 // Loop over 2 chambers in the station
ce3f5e87 198 for (Int_t stCH = 0; stCH < 2; stCH++) {
199 //
200 //
201 // Default Parameters for Muon Tracking Stations
202 ch = 2 * st + stCH;
203 if (ch < AliMUONConstants::NTrackingCh()) {
204 fChambers->AddAt(new AliMUONChamber(ch),ch);
205 } else {
504d0837 206 fChambers->AddAt(new AliMUONChamberTrigger(ch, GetGeometryTransformer()),ch);
ce3f5e87 207 }
ce3f5e87 208 } // Chamber stCH (0, 1) in
a9e2aefa 209 } // Station st (0...)
92c23b09 210
211 Int_t runnumber = AliCDBManager::Instance()->GetRun();
212
213 fCalibrationData = new AliMUONCalibrationData(runnumber);
fe4da5cc 214}
30178c30 215
ce3f5e87 216//____________________________________________________________________
fe4da5cc 217AliMUON::~AliMUON()
218{
d19b6003 219/// Destructor
220
edee5e63 221 AliDebug(1,Form("dtor this=%p",this));
7435e1f8 222 delete fChambers;
d4bb94a1 223 delete fGeometryBuilder;
d5609cfc 224 delete fRawWriter;
241560c2 225 delete fDigitMaker;
7435e1f8 226 delete fHitStore;
92c23b09 227 delete fCalibrationData;
d1cd2474 228}
30178c30 229
d1cd2474 230//_____________________________________________________________________________
231void AliMUON::AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder)
232{
d19b6003 233/// Add the geometry builder to the list
d1cd2474 234
d4bb94a1 235 fGeometryBuilder->AddBuilder(geomBuilder);
a897a37a 236}
c9d10ab5 237
ce3f5e87 238//____________________________________________________________________
fe4da5cc 239void AliMUON::BuildGeometry()
240{
d19b6003 241/// Geometry for event display
c9d10ab5 242
002920d1 243
ae89d471 244// for (Int_t i = 0; i < AliMUONConstants::NCh(); i++)
245// this->Chamber(i).SegmentationModel2(1)->Draw("eventdisplay");// to be check !
246
002920d1 247
fe4da5cc 248}
c9d10ab5 249
504d0837 250//____________________________________________________________________
251const AliMUONGeometry* AliMUON::GetGeometry() const
252{
d19b6003 253/// Return geometry parametrisation
504d0837 254
255 if ( !fGeometryBuilder) {
256 AliWarningStream() << "GeometryBuilder not defined." << std::endl;
257 return 0;
258 }
259
260 return fGeometryBuilder->GetGeometry();
261}
262
263//____________________________________________________________________
264const AliMUONGeometryTransformer* AliMUON::GetGeometryTransformer() const
265{
d19b6003 266/// Return geometry parametrisation
504d0837 267
268 const AliMUONGeometry* kGeometry = GetGeometry();
269
270 if ( !kGeometry) return 0;
271
272 return kGeometry->GetTransformer();
273}
274
ce3f5e87 275//__________________________________________________________________
7435e1f8 276void
277AliMUON::MakeBranch(Option_t* opt)
a897a37a 278{
7435e1f8 279 /// Create branche(s) to hold MUON hits
280 AliDebug(1,"");
281
282 TString sopt(opt);
283 if ( sopt != "H" ) return;
284
285 if (!fHitStore)
286 {
287 fHitStore = new AliMUONHitStoreV1;
ae31c826 288 if ( gAlice->GetMCApp() )
7435e1f8 289 {
290 if ( gAlice->GetMCApp()->GetHitLists() )
291 {
292 // AliStack::PurifyKine needs to be able to loop on our hits
293 // to remap the track numbers.
294 gAlice->GetMCApp()->AddHitList(fHitStore->Collection());
6d2f7cbd 295 }
7435e1f8 296 }
297 }
298
299 TTree* treeH = fLoader->TreeH();
300
301 if (!treeH)
302 {
303 AliFatal("No TreeH");
307d9d04 304 }
7435e1f8 305
306 fHitStore->Connect(*treeH);
307}
308
309//__________________________________________________________________
310void
311AliMUON::SetTreeAddress()
312{
313 /// Set Hits tree address
314
315// if ( gAlice->GetMCApp() && fHitStore )
316// {
317// TList* l = gAlice->GetMCApp()->GetHitLists();
318// if ( l )
319// {
320// TObject* o = l->First();
321// if (o!=fHitStore->HitCollection())
322// {
323// AliError(Form("Something is strange hitcollection=%x",fHitStore->HitCollection()));
324// l->Print();
325// }
326// }
327// }
328}
329
330//_________________________________________________________________
331void
332AliMUON::ResetHits()
333{
334 /// Reset hits
335
336 AliDebug(1,"");
337 if (fHitStore) fHitStore->Clear();
a9e2aefa 338}
339
ce3f5e87 340//_________________________________________________________________
a897a37a 341void AliMUON::SetChargeSlope(Int_t id, Float_t p1)
fe4da5cc 342{
d19b6003 343/// Set the inverse charge slope for chamber id
344
ce3f5e87 345 Int_t i=2*(id-1); //PH ((AliMUONChamber*) (*fChambers)[i])->SetSigmaIntegration(p1);
346 //PH ((AliMUONChamber*) (*fChambers)[i+1])->SetSigmaIntegration(p1);
2682e810 347 ((AliMUONChamber*) fChambers->At(i))->SetChargeSlope(p1);
348 ((AliMUONChamber*) fChambers->At(i+1))->SetChargeSlope(p1);
fe4da5cc 349}
ce3f5e87 350//__________________________________________________________________
a897a37a 351void AliMUON::SetChargeSpread(Int_t id, Float_t p1, Float_t p2)
fe4da5cc 352{
d19b6003 353/// Set sigma of charge spread for chamber id
354
fe4da5cc 355 Int_t i=2*(id-1);
2682e810 356 ((AliMUONChamber*) fChambers->At(i))->SetChargeSpread(p1,p2);
357 ((AliMUONChamber*) fChambers->At(i+1))->SetChargeSpread(p1,p2);
fe4da5cc 358}
ce3f5e87 359//___________________________________________________________________
a897a37a 360void AliMUON::SetSigmaIntegration(Int_t id, Float_t p1)
fe4da5cc 361{
d19b6003 362/// Set integration limits for charge spread
fe4da5cc 363 Int_t i=2*(id-1);
2682e810 364 ((AliMUONChamber*) fChambers->At(i))->SetSigmaIntegration(p1);
365 ((AliMUONChamber*) fChambers->At(i+1))->SetSigmaIntegration(p1);
fe4da5cc 366}
367
ce3f5e87 368//__________________________________________________________________
d09fafb0 369void AliMUON::SetMaxAdc(Int_t id, Int_t p1)
fe4da5cc 370{
d19b6003 371/// Set maximum number for ADCcounts (saturation)
372
fe4da5cc 373 Int_t i=2*(id-1);
2682e810 374 ((AliMUONChamber*) fChambers->At(i))->SetMaxAdc(p1);
375 ((AliMUONChamber*) fChambers->At(i+1))->SetMaxAdc(p1);
fe4da5cc 376}
d4bb94a1 377
ce3f5e87 378//__________________________________________________________________
a897a37a 379void AliMUON::SetMaxStepGas(Float_t p1)
fe4da5cc 380{
d19b6003 381/// Set stepsize in gas
382
ce3f5e87 383 fMaxStepGas=p1;
fe4da5cc 384}
ce3f5e87 385//__________________________________________________________________
a897a37a 386void AliMUON::SetMaxStepAlu(Float_t p1)
fe4da5cc 387{
d19b6003 388/// Set step size in Alu
389
fe4da5cc 390 fMaxStepAlu=p1;
391}
ce3f5e87 392//__________________________________________________________________
a897a37a 393void AliMUON::SetMaxDestepGas(Float_t p1)
fe4da5cc 394{
d19b6003 395/// Set maximum step size in Gas
396
fe4da5cc 397 fMaxDestepGas=p1;
398}
ce3f5e87 399//__________________________________________________________________
a897a37a 400void AliMUON::SetMaxDestepAlu(Float_t p1)
fe4da5cc 401{
d19b6003 402/// Set maximum step size in Alu
403
ce3f5e87 404 fMaxDestepAlu=p1;
fe4da5cc 405}
d4bb94a1 406
d1cd2474 407//____________________________________________________________________
408Float_t AliMUON::GetMaxStepGas() const
409{
d19b6003 410/// Return stepsize in gas
d1cd2474 411
412 return fMaxStepGas;
413}
414
415//____________________________________________________________________
416Float_t AliMUON::GetMaxStepAlu() const
417{
d19b6003 418/// Return step size in Alu
d1cd2474 419
420 return fMaxStepAlu;
421}
422
423//____________________________________________________________________
424Float_t AliMUON::GetMaxDestepGas() const
425{
d19b6003 426/// Return maximum step size in Gas
d1cd2474 427
428 return fMaxDestepGas;
429}
430
431//____________________________________________________________________
432Float_t AliMUON::GetMaxDestepAlu() const
433{
d19b6003 434/// Return maximum step size in Gas
d1cd2474 435
436 return fMaxDestepAlu;
437}
d4bb94a1 438
ce3f5e87 439//____________________________________________________________________
883746f3 440 void AliMUON::SetAlign(Bool_t align)
a713db22 441{
d19b6003 442/// Set option for alignement to geometry builder
883746f3 443
444 fGeometryBuilder->SetAlign(align);
445}
fe4da5cc 446
ce3f5e87 447//____________________________________________________________________
82d1ac0a 448 void AliMUON::SetAlign(const TString& fileName, Bool_t align)
449{
d19b6003 450/// Set option for alignement to geometry builder
82d1ac0a 451
452 fGeometryBuilder->SetAlign(fileName, align);
453}
454
455//____________________________________________________________________
7435e1f8 456void AliMUON::SetResponseModel(Int_t id, const AliMUONResponse& response)
fe4da5cc 457{
d19b6003 458/// Set the response for chamber id
2682e810 459 ((AliMUONChamber*) fChambers->At(id))->SetResponseModel(response);
fe4da5cc 460}
d19b6003 461
ce3f5e87 462//____________________________________________________________________
c92eb8ad 463AliDigitizer* AliMUON::CreateDigitizer(AliRunDigitizer* manager) const
85a5290f 464{
a3249004 465/// Return digitizer
68585390 466
92c23b09 467 AliMUONDigitizerV3* digitizer = new AliMUONDigitizerV3(manager, fDigitizerWithNoise);
b89ac3d6 468 digitizer->SetCalibrationData(fCalibrationData);
92c23b09 469 return digitizer;
85a5290f 470}
68585390 471
ce3f5e87 472//_____________________________________________________________________
2ab0c725 473void AliMUON::SDigits2Digits()
474{
d19b6003 475/// Write TreeD here only
d963c261 476
d963c261 477 char hname[30];
88cb7938 478 // sprintf(hname,"TreeD%d",fLoader->GetHeader()->GetEvent());
479 fLoader->TreeD()->Write(hname,TObject::kOverwrite);
480 fLoader->TreeD()->Reset();
2ab0c725 481}
a9e2aefa 482
d1775029 483//_____________________________________________________________________
484void AliMUON::Hits2SDigits()
485{
a3249004 486/// Perform Hits2Digits using SDigitizerV2
68585390 487
7435e1f8 488 AliMUONSDigitizerV2 sdigitizer;
489 sdigitizer.ExecuteTask();
d1775029 490}
68585390 491
39e39255 492//_____________________________________________________________________
493void AliMUON::Digits2Raw()
494{
d19b6003 495/// Convert digits of the current event to raw data
496
0014fbe8 497 AliRawDataHeaderSim header;
498
d5609cfc 499 if (!fRawWriter)
500 {
7435e1f8 501 fRawWriter = new AliMUONRawWriter;
502 AliDebug(1,Form("Creating %s",fRawWriter->ClassName()));
d5609cfc 503 if (fTriggerScalerEvent == kTRUE)
504 {
84ceeb06 505 fRawWriter->SetScalersNumbers();
d5609cfc 506 }
507 }
508
7435e1f8 509 fLoader->LoadDigits("READ");
510
511 TTree* treeD = fLoader->TreeD();
512
513 if (!treeD)
514 {
515 AliError("Could not get TreeD");
516 return;
517 }
518
519 AliMUONVTriggerStore* triggerStore = AliMUONVTriggerStore::Create(*treeD);
520 AliMUONVDigitStore* digitStore = AliMUONVDigitStore::Create(*treeD);
521
522 triggerStore->Connect(*treeD,kFALSE);
523 digitStore->Connect(*treeD,kFALSE);
524
525 treeD->GetEvent(0);
526
0014fbe8 527 fRawWriter->SetHeader(header);
7435e1f8 528 if (!fRawWriter->Digits2Raw(digitStore,triggerStore))
d5609cfc 529 {
530 AliError("pb writting raw data");
531 }
7435e1f8 532
533 delete triggerStore;
534 delete digitStore;
535
536 fLoader->UnloadDigits();
39e39255 537}
68585390 538
241560c2 539//_____________________________________________________________________
540Bool_t AliMUON::Raw2SDigits(AliRawReader* rawReader)
541{
542/// Convert raw data to SDigit
241560c2 543
7435e1f8 544 fLoader->LoadDigits("READ");
241560c2 545 if (!fLoader->TreeS()) fLoader->MakeSDigitsContainer();
546
7435e1f8 547 TTree* treeS = fLoader->TreeS();
548
549 AliMUONVDigitStore* sDigitStore = new AliMUONDigitStoreV1;
550 sDigitStore->Connect(*treeS);
551
552 fDigitMaker->Raw2Digits(rawReader,sDigitStore,0x0);
241560c2 553
554 fLoader->WriteSDigits("OVERWRITE");
7435e1f8 555
241560c2 556 fLoader->UnloadSDigits();
557
7435e1f8 558 delete sDigitStore;
559
241560c2 560 return kTRUE;
241560c2 561}
562
ce3f5e87 563//_______________________________________________________________________
3fa6cfdd 564AliLoader* AliMUON::MakeLoader(const char* topfoldername)
565{
d19b6003 566/// Build standard getter (AliLoader type);
567/// if detector wants to use castomized getter, it must overload this method
8c343c7c 568
569 AliDebug(1,Form("Creating standard getter for detector %s. Top folder is %s.",
570 GetName(),topfoldername));
128843d9 571 fLoader = new AliLoader(GetName(),topfoldername);
241560c2 572
3fa6cfdd 573 return fLoader;
574}
ffd9faa2 575
d5609cfc 576//________________________________________________________________________
577void
578AliMUON::ResetGeometryBuilder()
579{
d19b6003 580/// Only to be used by "experts" wanting to change the geometry builders
581/// to be used.
582/// As the ctor of AliMUON now defines a default geometrybuilder, this
583/// ResetGeometryBuilder() must be called prior to call the
584/// AddGeometryBuilder()
585
d5609cfc 586 delete fGeometryBuilder;
587 fGeometryBuilder = new AliMUONGeometryBuilder(this);
588 fGeometryBuilder
589 ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
590}
44b96781 591
592//____________________________________________________________________
593Bool_t AliMUON::GetTriggerResponseV1() const
594{
595///
596/// Returns fTriggerResponseV1
597///
598 return fTriggerResponseV1;
599
600}
601
e93b11d0 602//____________________________________________________________________
603Int_t AliMUON::GetTriggerCoinc44() const
604{
605///
606/// Returns fTriggerCoinc44
607///
608 return fTriggerCoinc44;
609
afb3ccf0 610}
611
612//____________________________________________________________________
88570609 613Bool_t AliMUON::GetTriggerEffCells() const
afb3ccf0 614{
615///
616/// Returns fTriggerEffCells
617///
618 return fTriggerEffCells;
619
e93b11d0 620}
621
a3249004 622//____________________________________________________________________
8c0b5e70 623Int_t AliMUON::GetDigitizerWithNoise() const
a3249004 624{
625///
626/// Returns fDigitizerWithNoise
627///
628 return fDigitizerWithNoise;
629
630}
631
b6c94614 632//____________________________________________________________________
481d8064 633Bool_t AliMUON::UsingFastTrackerDecoder() const
634{
635/// Checks to see if we are using the fast decoder for tracker DDL streams.
636
637 if ( ! fDigitMaker ) {
638 AliError("Digit maker is not instantiated.");
639 return kFALSE;
640 }
641
642 return fDigitMaker->UsingFastTrackerDecoder();
643}
644
645//____________________________________________________________________
646Bool_t AliMUON::UsingFastTriggerDecoder() const
647{
648/// Checks to see if we are using the fast decoder for trigger DDL streams.
649
650 if ( ! fDigitMaker ) {
651 AliError("Digit maker is not instantiated.");
652 return kFALSE;
653 }
654
655 return fDigitMaker->UsingFastTriggerDecoder();
656}
657
658//____________________________________________________________________
659void AliMUON::SetFastTrackerDecoder(Bool_t useFastDecoder)
b6c94614 660{
661/// Set fast raw data decoder
662
663 if ( ! fDigitMaker ) {
664 AliError("Digit maker is not instantiated.");
665 return;
481d8064 666 }
667
668 fDigitMaker->SetFastTrackerDecoder(useFastDecoder);
669}
670
671//____________________________________________________________________
672void AliMUON::SetFastTriggerDecoder(Bool_t useFastDecoder)
673{
674/// Set fast raw data decoder
675
676 if ( ! fDigitMaker ) {
677 AliError("Digit maker is not instantiated.");
678 return;
679 }
680
681 fDigitMaker->SetFastTriggerDecoder(useFastDecoder);
682}
b6c94614 683