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