]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUON.cxx
Several changes:
[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
504d0837 238//____________________________________________________________________
239const AliMUONGeometry* AliMUON::GetGeometry() const
240{
d19b6003 241/// Return geometry parametrisation
504d0837 242
243 if ( !fGeometryBuilder) {
244 AliWarningStream() << "GeometryBuilder not defined." << std::endl;
245 return 0;
246 }
247
248 return fGeometryBuilder->GetGeometry();
249}
250
251//____________________________________________________________________
252const AliMUONGeometryTransformer* AliMUON::GetGeometryTransformer() const
253{
d19b6003 254/// Return geometry parametrisation
504d0837 255
256 const AliMUONGeometry* kGeometry = GetGeometry();
257
258 if ( !kGeometry) return 0;
259
260 return kGeometry->GetTransformer();
261}
262
ce3f5e87 263//__________________________________________________________________
7435e1f8 264void
265AliMUON::MakeBranch(Option_t* opt)
a897a37a 266{
7435e1f8 267 /// Create branche(s) to hold MUON hits
268 AliDebug(1,"");
269
270 TString sopt(opt);
271 if ( sopt != "H" ) return;
272
273 if (!fHitStore)
274 {
275 fHitStore = new AliMUONHitStoreV1;
ae31c826 276 if ( gAlice->GetMCApp() )
7435e1f8 277 {
278 if ( gAlice->GetMCApp()->GetHitLists() )
279 {
280 // AliStack::PurifyKine needs to be able to loop on our hits
281 // to remap the track numbers.
282 gAlice->GetMCApp()->AddHitList(fHitStore->Collection());
6d2f7cbd 283 }
7435e1f8 284 }
285 }
286
287 TTree* treeH = fLoader->TreeH();
288
289 if (!treeH)
290 {
291 AliFatal("No TreeH");
307d9d04 292 }
7435e1f8 293
294 fHitStore->Connect(*treeH);
295}
296
297//__________________________________________________________________
298void
299AliMUON::SetTreeAddress()
300{
301 /// Set Hits tree address
302
303// if ( gAlice->GetMCApp() && fHitStore )
304// {
305// TList* l = gAlice->GetMCApp()->GetHitLists();
306// if ( l )
307// {
308// TObject* o = l->First();
309// if (o!=fHitStore->HitCollection())
310// {
311// AliError(Form("Something is strange hitcollection=%x",fHitStore->HitCollection()));
312// l->Print();
313// }
314// }
315// }
316}
317
318//_________________________________________________________________
319void
320AliMUON::ResetHits()
321{
322 /// Reset hits
323
324 AliDebug(1,"");
325 if (fHitStore) fHitStore->Clear();
a9e2aefa 326}
327
ce3f5e87 328//_________________________________________________________________
a897a37a 329void AliMUON::SetChargeSlope(Int_t id, Float_t p1)
fe4da5cc 330{
d19b6003 331/// Set the inverse charge slope for chamber id
332
ce3f5e87 333 Int_t i=2*(id-1); //PH ((AliMUONChamber*) (*fChambers)[i])->SetSigmaIntegration(p1);
334 //PH ((AliMUONChamber*) (*fChambers)[i+1])->SetSigmaIntegration(p1);
2682e810 335 ((AliMUONChamber*) fChambers->At(i))->SetChargeSlope(p1);
336 ((AliMUONChamber*) fChambers->At(i+1))->SetChargeSlope(p1);
fe4da5cc 337}
ce3f5e87 338//__________________________________________________________________
a897a37a 339void AliMUON::SetChargeSpread(Int_t id, Float_t p1, Float_t p2)
fe4da5cc 340{
d19b6003 341/// Set sigma of charge spread for chamber id
342
fe4da5cc 343 Int_t i=2*(id-1);
2682e810 344 ((AliMUONChamber*) fChambers->At(i))->SetChargeSpread(p1,p2);
345 ((AliMUONChamber*) fChambers->At(i+1))->SetChargeSpread(p1,p2);
fe4da5cc 346}
ce3f5e87 347//___________________________________________________________________
a897a37a 348void AliMUON::SetSigmaIntegration(Int_t id, Float_t p1)
fe4da5cc 349{
d19b6003 350/// Set integration limits for charge spread
fe4da5cc 351 Int_t i=2*(id-1);
2682e810 352 ((AliMUONChamber*) fChambers->At(i))->SetSigmaIntegration(p1);
353 ((AliMUONChamber*) fChambers->At(i+1))->SetSigmaIntegration(p1);
fe4da5cc 354}
355
ce3f5e87 356//__________________________________________________________________
d09fafb0 357void AliMUON::SetMaxAdc(Int_t id, Int_t p1)
fe4da5cc 358{
d19b6003 359/// Set maximum number for ADCcounts (saturation)
360
fe4da5cc 361 Int_t i=2*(id-1);
2682e810 362 ((AliMUONChamber*) fChambers->At(i))->SetMaxAdc(p1);
363 ((AliMUONChamber*) fChambers->At(i+1))->SetMaxAdc(p1);
fe4da5cc 364}
d4bb94a1 365
ce3f5e87 366//__________________________________________________________________
a897a37a 367void AliMUON::SetMaxStepGas(Float_t p1)
fe4da5cc 368{
d19b6003 369/// Set stepsize in gas
370
ce3f5e87 371 fMaxStepGas=p1;
fe4da5cc 372}
ce3f5e87 373//__________________________________________________________________
a897a37a 374void AliMUON::SetMaxStepAlu(Float_t p1)
fe4da5cc 375{
d19b6003 376/// Set step size in Alu
377
fe4da5cc 378 fMaxStepAlu=p1;
379}
ce3f5e87 380//__________________________________________________________________
a897a37a 381void AliMUON::SetMaxDestepGas(Float_t p1)
fe4da5cc 382{
d19b6003 383/// Set maximum step size in Gas
384
fe4da5cc 385 fMaxDestepGas=p1;
386}
ce3f5e87 387//__________________________________________________________________
a897a37a 388void AliMUON::SetMaxDestepAlu(Float_t p1)
fe4da5cc 389{
d19b6003 390/// Set maximum step size in Alu
391
ce3f5e87 392 fMaxDestepAlu=p1;
fe4da5cc 393}
d4bb94a1 394
d1cd2474 395//____________________________________________________________________
396Float_t AliMUON::GetMaxStepGas() const
397{
d19b6003 398/// Return stepsize in gas
d1cd2474 399
400 return fMaxStepGas;
401}
402
403//____________________________________________________________________
404Float_t AliMUON::GetMaxStepAlu() const
405{
d19b6003 406/// Return step size in Alu
d1cd2474 407
408 return fMaxStepAlu;
409}
410
411//____________________________________________________________________
412Float_t AliMUON::GetMaxDestepGas() const
413{
d19b6003 414/// Return maximum step size in Gas
d1cd2474 415
416 return fMaxDestepGas;
417}
418
419//____________________________________________________________________
420Float_t AliMUON::GetMaxDestepAlu() const
421{
d19b6003 422/// Return maximum step size in Gas
d1cd2474 423
424 return fMaxDestepAlu;
425}
d4bb94a1 426
883746f3 427//____________________________________________________________________
428 void AliMUON::SetAlign(Bool_t align)
a713db22 429{
d19b6003 430/// Set option for alignement to geometry builder
883746f3 431
432 fGeometryBuilder->SetAlign(align);
433}
fe4da5cc 434
82d1ac0a 435//____________________________________________________________________
436 void AliMUON::SetAlign(const TString& fileName, Bool_t align)
437{
d19b6003 438/// Set option for alignement to geometry builder
82d1ac0a 439
440 fGeometryBuilder->SetAlign(fileName, align);
441}
442
ce3f5e87 443//____________________________________________________________________
7435e1f8 444void AliMUON::SetResponseModel(Int_t id, const AliMUONResponse& response)
fe4da5cc 445{
d19b6003 446/// Set the response for chamber id
2682e810 447 ((AliMUONChamber*) fChambers->At(id))->SetResponseModel(response);
fe4da5cc 448}
d19b6003 449
ce3f5e87 450//____________________________________________________________________
c92eb8ad 451AliDigitizer* AliMUON::CreateDigitizer(AliRunDigitizer* manager) const
85a5290f 452{
a3249004 453/// Return digitizer
68585390 454
92c23b09 455 AliMUONDigitizerV3* digitizer = new AliMUONDigitizerV3(manager, fDigitizerWithNoise);
b89ac3d6 456 digitizer->SetCalibrationData(fCalibrationData);
92c23b09 457 return digitizer;
85a5290f 458}
68585390 459
ce3f5e87 460//_____________________________________________________________________
2ab0c725 461void AliMUON::SDigits2Digits()
462{
d19b6003 463/// Write TreeD here only
d963c261 464
d963c261 465 char hname[30];
88cb7938 466 // sprintf(hname,"TreeD%d",fLoader->GetHeader()->GetEvent());
467 fLoader->TreeD()->Write(hname,TObject::kOverwrite);
468 fLoader->TreeD()->Reset();
2ab0c725 469}
a9e2aefa 470
d1775029 471//_____________________________________________________________________
472void AliMUON::Hits2SDigits()
473{
a3249004 474/// Perform Hits2Digits using SDigitizerV2
68585390 475
7435e1f8 476 AliMUONSDigitizerV2 sdigitizer;
477 sdigitizer.ExecuteTask();
d1775029 478}
68585390 479
39e39255 480//_____________________________________________________________________
481void AliMUON::Digits2Raw()
482{
d19b6003 483/// Convert digits of the current event to raw data
484
0014fbe8 485 AliRawDataHeaderSim header;
486
d5609cfc 487 if (!fRawWriter)
488 {
7435e1f8 489 fRawWriter = new AliMUONRawWriter;
490 AliDebug(1,Form("Creating %s",fRawWriter->ClassName()));
d5609cfc 491 if (fTriggerScalerEvent == kTRUE)
492 {
84ceeb06 493 fRawWriter->SetScalersNumbers();
d5609cfc 494 }
495 }
496
7435e1f8 497 fLoader->LoadDigits("READ");
498
499 TTree* treeD = fLoader->TreeD();
500
501 if (!treeD)
502 {
503 AliError("Could not get TreeD");
504 return;
505 }
506
507 AliMUONVTriggerStore* triggerStore = AliMUONVTriggerStore::Create(*treeD);
508 AliMUONVDigitStore* digitStore = AliMUONVDigitStore::Create(*treeD);
509
510 triggerStore->Connect(*treeD,kFALSE);
511 digitStore->Connect(*treeD,kFALSE);
512
513 treeD->GetEvent(0);
514
0014fbe8 515 fRawWriter->SetHeader(header);
7435e1f8 516 if (!fRawWriter->Digits2Raw(digitStore,triggerStore))
d5609cfc 517 {
518 AliError("pb writting raw data");
519 }
7435e1f8 520
521 delete triggerStore;
522 delete digitStore;
523
524 fLoader->UnloadDigits();
39e39255 525}
68585390 526
241560c2 527//_____________________________________________________________________
528Bool_t AliMUON::Raw2SDigits(AliRawReader* rawReader)
529{
530/// Convert raw data to SDigit
241560c2 531
7435e1f8 532 fLoader->LoadDigits("READ");
241560c2 533 if (!fLoader->TreeS()) fLoader->MakeSDigitsContainer();
534
7435e1f8 535 TTree* treeS = fLoader->TreeS();
536
537 AliMUONVDigitStore* sDigitStore = new AliMUONDigitStoreV1;
538 sDigitStore->Connect(*treeS);
539
540 fDigitMaker->Raw2Digits(rawReader,sDigitStore,0x0);
241560c2 541
542 fLoader->WriteSDigits("OVERWRITE");
7435e1f8 543
241560c2 544 fLoader->UnloadSDigits();
545
7435e1f8 546 delete sDigitStore;
547
241560c2 548 return kTRUE;
241560c2 549}
550
ce3f5e87 551//_______________________________________________________________________
3fa6cfdd 552AliLoader* AliMUON::MakeLoader(const char* topfoldername)
553{
d19b6003 554/// Build standard getter (AliLoader type);
555/// if detector wants to use castomized getter, it must overload this method
8c343c7c 556
557 AliDebug(1,Form("Creating standard getter for detector %s. Top folder is %s.",
558 GetName(),topfoldername));
128843d9 559 fLoader = new AliLoader(GetName(),topfoldername);
241560c2 560
3fa6cfdd 561 return fLoader;
562}
ffd9faa2 563
d5609cfc 564//________________________________________________________________________
565void
566AliMUON::ResetGeometryBuilder()
567{
d19b6003 568/// Only to be used by "experts" wanting to change the geometry builders
569/// to be used.
570/// As the ctor of AliMUON now defines a default geometrybuilder, this
571/// ResetGeometryBuilder() must be called prior to call the
572/// AddGeometryBuilder()
573
d5609cfc 574 delete fGeometryBuilder;
575 fGeometryBuilder = new AliMUONGeometryBuilder(this);
576 fGeometryBuilder
577 ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
578}
44b96781 579
580//____________________________________________________________________
581Bool_t AliMUON::GetTriggerResponseV1() const
582{
583///
584/// Returns fTriggerResponseV1
585///
586 return fTriggerResponseV1;
587
588}
589
e93b11d0 590//____________________________________________________________________
591Int_t AliMUON::GetTriggerCoinc44() const
592{
593///
594/// Returns fTriggerCoinc44
595///
596 return fTriggerCoinc44;
597
afb3ccf0 598}
599
600//____________________________________________________________________
88570609 601Bool_t AliMUON::GetTriggerEffCells() const
afb3ccf0 602{
603///
604/// Returns fTriggerEffCells
605///
606 return fTriggerEffCells;
607
e93b11d0 608}
609
a3249004 610//____________________________________________________________________
8c0b5e70 611Int_t AliMUON::GetDigitizerWithNoise() const
a3249004 612{
613///
614/// Returns fDigitizerWithNoise
615///
616 return fDigitizerWithNoise;
617
618}
619
b6c94614 620//____________________________________________________________________
481d8064 621Bool_t AliMUON::UsingFastTrackerDecoder() const
622{
623/// Checks to see if we are using the fast decoder for tracker DDL streams.
624
625 if ( ! fDigitMaker ) {
626 AliError("Digit maker is not instantiated.");
627 return kFALSE;
628 }
629
630 return fDigitMaker->UsingFastTrackerDecoder();
631}
632
633//____________________________________________________________________
634Bool_t AliMUON::UsingFastTriggerDecoder() const
635{
636/// Checks to see if we are using the fast decoder for trigger DDL streams.
637
638 if ( ! fDigitMaker ) {
639 AliError("Digit maker is not instantiated.");
640 return kFALSE;
641 }
642
643 return fDigitMaker->UsingFastTriggerDecoder();
644}
645
646//____________________________________________________________________
647void AliMUON::SetFastTrackerDecoder(Bool_t useFastDecoder)
b6c94614 648{
649/// Set fast raw data decoder
650
651 if ( ! fDigitMaker ) {
652 AliError("Digit maker is not instantiated.");
653 return;
481d8064 654 }
655
656 fDigitMaker->SetFastTrackerDecoder(useFastDecoder);
657}
658
659//____________________________________________________________________
660void AliMUON::SetFastTriggerDecoder(Bool_t useFastDecoder)
661{
662/// Set fast raw data decoder
663
664 if ( ! fDigitMaker ) {
665 AliError("Digit maker is not instantiated.");
666 return;
667 }
668
669 fDigitMaker->SetFastTriggerDecoder(useFastDecoder);
670}
b6c94614 671