AliRoot Core  v5-06-30 (35d6c57)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONReconstructor.cxx File Reference
Include dependency graph for AliMUONReconstructor.cxx:

Go to the source code of this file.

Macros

#define TObjArray   .h"#endifclass AliMUONCalibrationData;class AliMUONDigitCalibrator;class AliMUONDigitMaker;class AliMUONGeometryTransformer;class AliMUONTracker;class AliMUONTriggerCircuit;class AliMUONVClusterFinder;class AliMUONVClusterServer;class AliMUONVClusterStore;class AliMUONVDigitStore;class AliMUONVTrackStore;class AliMUONVTriggerStore;class AliMUONTriggerElectronics;class TClonesArray;class AliMUONTriggerUtilities;#include "AliMUONRecoParam.h"class AliMUONReconstructor : public AliReconstructor{public: AliMUONReconstructor(); virtual ~AliMUONReconstructor(); virtual Bool_t HasDigitConversion() const; virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const; virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const; virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const; virtual AliTracker* CreateTracker() const; /// Get param object static const AliMUONRecoParam* GetRecoParam(); static AliMUONVClusterFinder* CreateClusterFinder(const char* clusterFinderType);private: /// Not implemented AliMUONReconstructor(const AliMUONReconstructor&); /// Not implemented AliMUONReconstructor& operator=(const AliMUONReconstructor&); void ConvertDigits(AliRawReader* rawReader, AliMUONVDigitStore* digitStore, AliMUONVTriggerStore* triggerStore) const; void Calibrate(AliMUONVDigitStore& digitStore) const; void CreateCalibrationData() const; void CreateCalibrator() const; void CreateDigitMaker() const; void CreateTriggerCircuit() const; void CreateTriggerUtilities() const; AliMUONVClusterServer* CreateClusterServer(const AliMUONRecoParam& rp) const; void FillTreeR(AliMUONVTriggerStore* triggerStore, TTree& clustersTree) const; AliMUONVDigitStore* DigitStore() const; AliMUONVTriggerStore* TriggerStore() const; void ResponseRemovingChambers(AliMUONVTriggerStore* triggerStore) const; private: mutable AliMUONDigitMaker* fDigitMaker; //!<! Raw to Digits converter AliMUONGeometryTransformer* fTransformer; //!<! Geometry transformer (local<->global) mutable AliMUONVDigitStore* fDigitStore; //!<! Digit container mutable AliMUONTriggerCircuit* fTriggerCircuit; //!<! Trigger Circuit mutable AliMUONCalibrationData* fCalibrationData; //!<! Calibration data mutable AliMUONDigitCalibrator* fDigitCalibrator; //!<! Digit to calibrate digit converter mutable AliMUONVTriggerStore* fTriggerStore; //!<! Trigger container mutable AliMUONVTrackStore* fTrackStore; //!<! Track container mutable AliMUONVClusterStore* fClusterStore; //!<! cluster store (when not in combined tracking mode) mutable AliMUONTriggerElectronics* fTriggerProcessor; //!<! Processor to recalculate trigger response mutable AliMUONTriggerUtilities* fTriggerUtilities; //!<! Trigger utilities for masks mutable TObjArray fClusterServers; //!<! Clusterizers (one per event specie) mutable TObjArray fTrackers; //!<! trackers (one per event specie) mutable Bool_t fShouldCalibrate; // whether the fDigitCalibrator should be non-null ClassDef(AliMUONReconstructor,12) // Implementation of AliReconstructor};#endif#include "AliMUONCalibrationData.h"#include "AliMUONClusterFinderCOG.h"#include "AliMUONClusterFinderMLEM.h"#include "AliMUONClusterFinderSimpleFit.h"#include "AliMUONClusterFinderPeakCOG.h"#include "AliMUONClusterFinderPeakFit.h"#include "AliMUONClusterStoreV1.h"#include "AliMUONClusterStoreV2.h"#include "AliMUONConstants.h"#include "AliMUONDigitCalibrator.h"#include "AliMUONDigitMaker.h"#include "AliMUONDigitStoreV1.h"#include "AliMUONDigitStoreV2R.h"#include "AliMUONGeometryTransformer.h"#include "AliMUONPadStatusMaker.h"#include "AliMUONPreClusterFinder.h"#include "AliMUONPreClusterFinderV2.h"#include "AliMUONPreClusterFinderV3.h"#include "AliMUONSimpleClusterServer.h"#include "AliMUONTracker.h"#include "AliMUONTriggerCircuit.h"#include "AliMUONTriggerStoreV1.h"#include "AliMUONVClusterFinder.h"#include "AliMUONVClusterServer.h"#include "AliMUONVTrackStore.h"#include "AliMUONTriggerElectronics.h"#include "AliMUONTriggerUtilities.h"#include "AliMpArea.h"#include "AliMpCDB.h"#include "AliMpConstants.h"#include "AliMpDDLStore.h"#include "AliMpSegmentation.h"#include "AliRawReader.h"#include "AliCDBManager.h"#include "AliCodeTimer.h"#include "AliLog.h"#include "AliRunInfo.h"#include <Riostream.h>#include <TObjArray.h>#include <TClonesArray.h>#include <TString.h>#include <TTree.h>/// \cond CLASSIMPClassImp(AliMUONReconstructor)/// \endcond //_____________________________________________________________________________AliMUONReconstructor::AliMUONReconstructor() : AliReconstructor(),fDigitMaker(0x0),fTransformer(new AliMUONGeometryTransformer()),fDigitStore(0x0),fTriggerCircuit(0x0),fCalibrationData(0x0),fDigitCalibrator(0x0),fTriggerStore(0x0),fTrackStore(0x0),fClusterStore(0x0),fTriggerProcessor(0x0),fTriggerUtilities(0x0),fClusterServers(),fTrackers(),fShouldCalibrate(kTRUE){ /// normal ctor AliDebug(1,""); // Unload mapping objects // if they have been loaded from the obsolete OCDB mapping objects if ( AliMpDDLStore::Instance(false) ) { AliCDBManager::Instance()->UnloadFromCache("MUON/Calib/DDLStore"); delete AliMpDDLStore::Instance(); } if ( AliMpSegmentation::Instance(false) ) { AliCDBManager::Instance()->UnloadFromCache("MUON/Calib/Mapping"); delete AliMpSegmentation::Instance(); } // Load mapping if ( ! AliMpCDB::LoadDDLStore() ) { AliFatal("Could not access mapping from OCDB !"); } // Load geometry data fTransformer->LoadGeometryData(); fClusterServers.SetOwner(kTRUE); fTrackers.SetOwner(kTRUE);}//_____________________________________________________________________________AliMUONReconstructor::~AliMUONReconstructor(){ /// dtor AliDebug(1,""); delete fDigitCalibrator; delete fDigitMaker; delete fDigitStore; delete fTransformer; delete fTriggerCircuit; delete fTriggerStore; delete fTrackStore; delete fClusterStore; delete fTriggerProcessor; delete fTriggerUtilities; delete AliMpSegmentation::Instance(false); delete AliMpDDLStore::Instance(false); delete fCalibrationData; }//_____________________________________________________________________________voidAliMUONReconstructor::Calibrate(AliMUONVDigitStore& digitStore) const{ /// Calibrate the digitStore if (!fDigitCalibrator) { CreateCalibrator(); } if ( fShouldCalibrate ) { AliCodeTimerAuto(Form("%s::Calibrate(AliMUONVDigitStore*)",fDigitCalibrator->ClassName()),0) fDigitCalibrator->Calibrate(digitStore); }}//_____________________________________________________________________________voidAliMUONReconstructor::ConvertDigits(AliRawReader* rawReader, AliMUONVDigitStore* digitStore, AliMUONVTriggerStore* triggerStore) const{ /// Convert raw data into digit and trigger stores CreateDigitMaker(); // Skip reconstruction if event is Calibration if ( GetRecoParam()->GetEventSpecie() == AliRecoParam::kCalib ) { digitStore->Clear(); // Remove possible digits from previous event triggerStore->Clear(); // Remove possible triggers from previous event AliInfo("Calibration event: do not convert digits"); return; } AliCodeTimerStart(Form("%s::Raw2Digits(AliRawReader*,AliMUONVDigitStore*,AliMUONVTriggerStore*)", fDigitMaker->ClassName())) fDigitMaker->Raw2Digits(rawReader,digitStore,triggerStore); AliCodeTimerStop(Form("%s::Raw2Digits(AliRawReader*,AliMUONVDigitStore*,AliMUONVTriggerStore*)", fDigitMaker->ClassName())) Calibrate(*digitStore);}//_____________________________________________________________________________void AliMUONReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const{ /// convert raw data into a digit tree AliCodeTimerAuto("",0) Bool_t alone = ( TriggerStore() == 0 ); Bool_t ok = DigitStore()->Connect(*digitsTree,alone); if ( TriggerStore() ) { ok = ok && TriggerStore()->Connect(*digitsTree,kFALSE); } if (!ok) { AliError("Could not make branches on TreeD"); } else { ConvertDigits(rawReader,DigitStore(),TriggerStore()); AliCodeTimerStart("Fill digits") digitsTree->Fill(); AliCodeTimerStop("Fill digits") DigitStore()->Clear(); }}//_____________________________________________________________________________voidAliMUONReconstructor::CreateDigitMaker() const{ /// Create (and create if necessary) the digit maker if (fDigitMaker) return; AliCodeTimerAuto("",0) TString option = GetOption(); Bool_t enableErrorLogging = kFALSE; if (option.Contains("ENABLEERRORLOGGING")) { enableErrorLogging = kTRUE; } fDigitMaker = new AliMUONDigitMaker(enableErrorLogging); option.ToUpper(); // Always make trigger digits // (needed when calculating trigger chamber efficiency) fDigitMaker->SetMakeTriggerDigits(kTRUE); if ( GetRecoParam()->TryRecover() ) { fDigitMaker->SetTryRecover(kTRUE); } else { fDigitMaker->SetTryRecover(kFALSE); }}//_____________________________________________________________________________void AliMUONReconstructor::CreateTriggerCircuit() const{ /// Return (and create if necessary) the trigger circuit object if (fTriggerCircuit) return; AliCodeTimerAuto("",0) fTriggerCircuit = new AliMUONTriggerCircuit(fTransformer);}//_____________________________________________________________________________void AliMUONReconstructor::CreateTriggerUtilities() const{ /// Return (and create if necessary) the trigger utilities object if ( fTriggerUtilities ) return; AliCodeTimerAuto("",0) if ( ! fCalibrationData ) CreateCalibrationData(); fTriggerUtilities = new AliMUONTriggerUtilities(fCalibrationData);}//_____________________________________________________________________________AliTracker* AliMUONReconstructor::CreateTracker() const{ /// Create the MUONTracker object CreateTriggerCircuit(); CreateTriggerUtilities(); const AliMUONRecoParam* rp = GetRecoParam(); Int_t es = rp->GetEventSpecie(); AliTracker* tracker = static_cast<AliTracker*>(fTrackers.At(es)); if (!tracker ) { if ( ! rp->CombineClusterTrackReco() ) { tracker = new AliMUONTracker(rp, 0x0, *DigitStore(), fTransformer, fTriggerCircuit, fTriggerUtilities); AliInfo(Form("Created tracker %p for recoparam of type %s es=%d", tracker, AliRecoParam::GetEventSpecieName(AliRecoParam::Convert(rp->GetEventSpecie())),es)); } else { tracker = new AliMUONTracker(rp, CreateClusterServer(*rp), *DigitStore(), fTransformer, fTriggerCircuit, fTriggerUtilities); AliInfo(Form("Created (combined) tracker %p for recoparam of type %s es=%d", tracker, AliRecoParam::GetEventSpecieName(AliRecoParam::Convert(rp->GetEventSpecie())),es)); } fTrackers.AddAtAndExpand(tracker,es); } return tracker;}//_____________________________________________________________________________AliMUONVClusterFinder*AliMUONReconstructor::CreateClusterFinder(const char* clusterFinderType){ /// Create a given cluster finder instance AliCodeTimerAutoGeneral("",0) AliMUONVClusterFinder* clusterFinder(0x0); TString opt(clusterFinderType); opt.ToUpper(); if ( strstr(opt,"PRECLUSTERV2") ) { clusterFinder = new AliMUONPreClusterFinderV2; } else if ( strstr(opt,"PRECLUSTERV3") ) { clusterFinder = new AliMUONPreClusterFinderV3; } else if ( strstr(opt,"PRECLUSTER") ) { clusterFinder = new AliMUONPreClusterFinder; } else if ( strstr(opt,"PEAKCOG") ) { clusterFinder = new AliMUONClusterFinderPeakCOG(kFALSE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"PEAKFIT") ) { clusterFinder = new AliMUONClusterFinderPeakFit(kFALSE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"COG") ) { clusterFinder = new AliMUONClusterFinderCOG(new AliMUONPreClusterFinder); } else if ( strstr(opt,"SIMPLEFITV3") ) { clusterFinder = new AliMUONClusterFinderSimpleFit(new AliMUONClusterFinderCOG(new AliMUONPreClusterFinderV3)); } else if ( strstr(opt,"SIMPLEFIT") ) { clusterFinder = new AliMUONClusterFinderSimpleFit(new AliMUONClusterFinderCOG(new AliMUONPreClusterFinder)); } else if ( strstr(opt,"MLEM:DRAW") ) { clusterFinder = new AliMUONClusterFinderMLEM(kTRUE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"MLEMV3") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinderV3); } else if ( strstr(opt,"MLEMV2") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinderV2); } else if ( strstr(opt,"MLEM") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinder); } else { AliErrorClass(Form("clustering mode \"%s\" does not exist",opt.Data()));
 

Variables

 return
 
return clusterFinder
 

Macro Definition Documentation

#define TObjArray   .h"#endifclass AliMUONCalibrationData;class AliMUONDigitCalibrator;class AliMUONDigitMaker;class AliMUONGeometryTransformer;class AliMUONTracker;class AliMUONTriggerCircuit;class AliMUONVClusterFinder;class AliMUONVClusterServer;class AliMUONVClusterStore;class AliMUONVDigitStore;class AliMUONVTrackStore;class AliMUONVTriggerStore;class AliMUONTriggerElectronics;class TClonesArray;class AliMUONTriggerUtilities;#include "AliMUONRecoParam.h"class AliMUONReconstructor : public AliReconstructor{public: AliMUONReconstructor(); virtual ~AliMUONReconstructor(); virtual Bool_t HasDigitConversion() const; virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const; virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const; virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const; virtual AliTracker* CreateTracker() const; /// Get param object static const AliMUONRecoParam* GetRecoParam(); static AliMUONVClusterFinder* CreateClusterFinder(const char* clusterFinderType);private: /// Not implemented AliMUONReconstructor(const AliMUONReconstructor&); /// Not implemented AliMUONReconstructor& operator=(const AliMUONReconstructor&); void ConvertDigits(AliRawReader* rawReader, AliMUONVDigitStore* digitStore, AliMUONVTriggerStore* triggerStore) const; void Calibrate(AliMUONVDigitStore& digitStore) const; void CreateCalibrationData() const; void CreateCalibrator() const; void CreateDigitMaker() const; void CreateTriggerCircuit() const; void CreateTriggerUtilities() const; AliMUONVClusterServer* CreateClusterServer(const AliMUONRecoParam& rp) const; void FillTreeR(AliMUONVTriggerStore* triggerStore, TTree& clustersTree) const; AliMUONVDigitStore* DigitStore() const; AliMUONVTriggerStore* TriggerStore() const; void ResponseRemovingChambers(AliMUONVTriggerStore* triggerStore) const; private: mutable AliMUONDigitMaker* fDigitMaker; //!<! Raw to Digits converter AliMUONGeometryTransformer* fTransformer; //!<! Geometry transformer (local<->global) mutable AliMUONVDigitStore* fDigitStore; //!<! Digit container mutable AliMUONTriggerCircuit* fTriggerCircuit; //!<! Trigger Circuit mutable AliMUONCalibrationData* fCalibrationData; //!<! Calibration data mutable AliMUONDigitCalibrator* fDigitCalibrator; //!<! Digit to calibrate digit converter mutable AliMUONVTriggerStore* fTriggerStore; //!<! Trigger container mutable AliMUONVTrackStore* fTrackStore; //!<! Track container mutable AliMUONVClusterStore* fClusterStore; //!<! cluster store (when not in combined tracking mode) mutable AliMUONTriggerElectronics* fTriggerProcessor; //!<! Processor to recalculate trigger response mutable AliMUONTriggerUtilities* fTriggerUtilities; //!<! Trigger utilities for masks mutable TObjArray fClusterServers; //!<! Clusterizers (one per event specie) mutable TObjArray fTrackers; //!<! trackers (one per event specie) mutable Bool_t fShouldCalibrate; // whether the fDigitCalibrator should be non-null ClassDef(AliMUONReconstructor,12) // Implementation of AliReconstructor};#endif#include "AliMUONCalibrationData.h"#include "AliMUONClusterFinderCOG.h"#include "AliMUONClusterFinderMLEM.h"#include "AliMUONClusterFinderSimpleFit.h"#include "AliMUONClusterFinderPeakCOG.h"#include "AliMUONClusterFinderPeakFit.h"#include "AliMUONClusterStoreV1.h"#include "AliMUONClusterStoreV2.h"#include "AliMUONConstants.h"#include "AliMUONDigitCalibrator.h"#include "AliMUONDigitMaker.h"#include "AliMUONDigitStoreV1.h"#include "AliMUONDigitStoreV2R.h"#include "AliMUONGeometryTransformer.h"#include "AliMUONPadStatusMaker.h"#include "AliMUONPreClusterFinder.h"#include "AliMUONPreClusterFinderV2.h"#include "AliMUONPreClusterFinderV3.h"#include "AliMUONSimpleClusterServer.h"#include "AliMUONTracker.h"#include "AliMUONTriggerCircuit.h"#include "AliMUONTriggerStoreV1.h"#include "AliMUONVClusterFinder.h"#include "AliMUONVClusterServer.h"#include "AliMUONVTrackStore.h"#include "AliMUONTriggerElectronics.h"#include "AliMUONTriggerUtilities.h"#include "AliMpArea.h"#include "AliMpCDB.h"#include "AliMpConstants.h"#include "AliMpDDLStore.h"#include "AliMpSegmentation.h"#include "AliRawReader.h"#include "AliCDBManager.h"#include "AliCodeTimer.h"#include "AliLog.h"#include "AliRunInfo.h"#include <Riostream.h>#include <TObjArray.h>#include <TClonesArray.h>#include <TString.h>#include <TTree.h>/// \cond CLASSIMPClassImp(AliMUONReconstructor)/// \endcond //_____________________________________________________________________________AliMUONReconstructor::AliMUONReconstructor() : AliReconstructor(),fDigitMaker(0x0),fTransformer(new AliMUONGeometryTransformer()),fDigitStore(0x0),fTriggerCircuit(0x0),fCalibrationData(0x0),fDigitCalibrator(0x0),fTriggerStore(0x0),fTrackStore(0x0),fClusterStore(0x0),fTriggerProcessor(0x0),fTriggerUtilities(0x0),fClusterServers(),fTrackers(),fShouldCalibrate(kTRUE){ /// normal ctor AliDebug(1,""); // Unload mapping objects // if they have been loaded from the obsolete OCDB mapping objects if ( AliMpDDLStore::Instance(false) ) { AliCDBManager::Instance()->UnloadFromCache("MUON/Calib/DDLStore"); delete AliMpDDLStore::Instance(); } if ( AliMpSegmentation::Instance(false) ) { AliCDBManager::Instance()->UnloadFromCache("MUON/Calib/Mapping"); delete AliMpSegmentation::Instance(); } // Load mapping if ( ! AliMpCDB::LoadDDLStore() ) { AliFatal("Could not access mapping from OCDB !"); } // Load geometry data fTransformer->LoadGeometryData(); fClusterServers.SetOwner(kTRUE); fTrackers.SetOwner(kTRUE);}//_____________________________________________________________________________AliMUONReconstructor::~AliMUONReconstructor(){ /// dtor AliDebug(1,""); delete fDigitCalibrator; delete fDigitMaker; delete fDigitStore; delete fTransformer; delete fTriggerCircuit; delete fTriggerStore; delete fTrackStore; delete fClusterStore; delete fTriggerProcessor; delete fTriggerUtilities; delete AliMpSegmentation::Instance(false); delete AliMpDDLStore::Instance(false); delete fCalibrationData; }//_____________________________________________________________________________voidAliMUONReconstructor::Calibrate(AliMUONVDigitStore& digitStore) const{ /// Calibrate the digitStore if (!fDigitCalibrator) { CreateCalibrator(); } if ( fShouldCalibrate ) { AliCodeTimerAuto(Form("%s::Calibrate(AliMUONVDigitStore*)",fDigitCalibrator->ClassName()),0) fDigitCalibrator->Calibrate(digitStore); }}//_____________________________________________________________________________voidAliMUONReconstructor::ConvertDigits(AliRawReader* rawReader, AliMUONVDigitStore* digitStore, AliMUONVTriggerStore* triggerStore) const{ /// Convert raw data into digit and trigger stores CreateDigitMaker(); // Skip reconstruction if event is Calibration if ( GetRecoParam()->GetEventSpecie() == AliRecoParam::kCalib ) { digitStore->Clear(); // Remove possible digits from previous event triggerStore->Clear(); // Remove possible triggers from previous event AliInfo("Calibration event: do not convert digits"); return; } AliCodeTimerStart(Form("%s::Raw2Digits(AliRawReader*,AliMUONVDigitStore*,AliMUONVTriggerStore*)", fDigitMaker->ClassName())) fDigitMaker->Raw2Digits(rawReader,digitStore,triggerStore); AliCodeTimerStop(Form("%s::Raw2Digits(AliRawReader*,AliMUONVDigitStore*,AliMUONVTriggerStore*)", fDigitMaker->ClassName())) Calibrate(*digitStore);}//_____________________________________________________________________________void AliMUONReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const{ /// convert raw data into a digit tree AliCodeTimerAuto("",0) Bool_t alone = ( TriggerStore() == 0 ); Bool_t ok = DigitStore()->Connect(*digitsTree,alone); if ( TriggerStore() ) { ok = ok && TriggerStore()->Connect(*digitsTree,kFALSE); } if (!ok) { AliError("Could not make branches on TreeD"); } else { ConvertDigits(rawReader,DigitStore(),TriggerStore()); AliCodeTimerStart("Fill digits") digitsTree->Fill(); AliCodeTimerStop("Fill digits") DigitStore()->Clear(); }}//_____________________________________________________________________________voidAliMUONReconstructor::CreateDigitMaker() const{ /// Create (and create if necessary) the digit maker if (fDigitMaker) return; AliCodeTimerAuto("",0) TString option = GetOption(); Bool_t enableErrorLogging = kFALSE; if (option.Contains("ENABLEERRORLOGGING")) { enableErrorLogging = kTRUE; } fDigitMaker = new AliMUONDigitMaker(enableErrorLogging); option.ToUpper(); // Always make trigger digits // (needed when calculating trigger chamber efficiency) fDigitMaker->SetMakeTriggerDigits(kTRUE); if ( GetRecoParam()->TryRecover() ) { fDigitMaker->SetTryRecover(kTRUE); } else { fDigitMaker->SetTryRecover(kFALSE); }}//_____________________________________________________________________________void AliMUONReconstructor::CreateTriggerCircuit() const{ /// Return (and create if necessary) the trigger circuit object if (fTriggerCircuit) return; AliCodeTimerAuto("",0) fTriggerCircuit = new AliMUONTriggerCircuit(fTransformer);}//_____________________________________________________________________________void AliMUONReconstructor::CreateTriggerUtilities() const{ /// Return (and create if necessary) the trigger utilities object if ( fTriggerUtilities ) return; AliCodeTimerAuto("",0) if ( ! fCalibrationData ) CreateCalibrationData(); fTriggerUtilities = new AliMUONTriggerUtilities(fCalibrationData);}//_____________________________________________________________________________AliTracker* AliMUONReconstructor::CreateTracker() const{ /// Create the MUONTracker object CreateTriggerCircuit(); CreateTriggerUtilities(); const AliMUONRecoParam* rp = GetRecoParam(); Int_t es = rp->GetEventSpecie(); AliTracker* tracker = static_cast<AliTracker*>(fTrackers.At(es)); if (!tracker ) { if ( ! rp->CombineClusterTrackReco() ) { tracker = new AliMUONTracker(rp, 0x0, *DigitStore(), fTransformer, fTriggerCircuit, fTriggerUtilities); AliInfo(Form("Created tracker %p for recoparam of type %s es=%d", tracker, AliRecoParam::GetEventSpecieName(AliRecoParam::Convert(rp->GetEventSpecie())),es)); } else { tracker = new AliMUONTracker(rp, CreateClusterServer(*rp), *DigitStore(), fTransformer, fTriggerCircuit, fTriggerUtilities); AliInfo(Form("Created (combined) tracker %p for recoparam of type %s es=%d", tracker, AliRecoParam::GetEventSpecieName(AliRecoParam::Convert(rp->GetEventSpecie())),es)); } fTrackers.AddAtAndExpand(tracker,es); } return tracker;}//_____________________________________________________________________________AliMUONVClusterFinder*AliMUONReconstructor::CreateClusterFinder(const char* clusterFinderType){ /// Create a given cluster finder instance AliCodeTimerAutoGeneral("",0) AliMUONVClusterFinder* clusterFinder(0x0); TString opt(clusterFinderType); opt.ToUpper(); if ( strstr(opt,"PRECLUSTERV2") ) { clusterFinder = new AliMUONPreClusterFinderV2; } else if ( strstr(opt,"PRECLUSTERV3") ) { clusterFinder = new AliMUONPreClusterFinderV3; } else if ( strstr(opt,"PRECLUSTER") ) { clusterFinder = new AliMUONPreClusterFinder; } else if ( strstr(opt,"PEAKCOG") ) { clusterFinder = new AliMUONClusterFinderPeakCOG(kFALSE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"PEAKFIT") ) { clusterFinder = new AliMUONClusterFinderPeakFit(kFALSE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"COG") ) { clusterFinder = new AliMUONClusterFinderCOG(new AliMUONPreClusterFinder); } else if ( strstr(opt,"SIMPLEFITV3") ) { clusterFinder = new AliMUONClusterFinderSimpleFit(new AliMUONClusterFinderCOG(new AliMUONPreClusterFinderV3)); } else if ( strstr(opt,"SIMPLEFIT") ) { clusterFinder = new AliMUONClusterFinderSimpleFit(new AliMUONClusterFinderCOG(new AliMUONPreClusterFinder)); } else if ( strstr(opt,"MLEM:DRAW") ) { clusterFinder = new AliMUONClusterFinderMLEM(kTRUE,new AliMUONPreClusterFinder); } else if ( strstr(opt,"MLEMV3") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinderV3); } else if ( strstr(opt,"MLEMV2") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinderV2); } else if ( strstr(opt,"MLEM") ) { clusterFinder = new AliMUONClusterFinderMLEM(kFALSE,new AliMUONPreClusterFinder); } else { AliErrorClass(Form("clustering mode \"%s\" does not exist",opt.Data()));

Definition at line 19 of file AliMUONReconstructor.h.

Referenced by AliMUONPainterGroup::Add(), AliMUONVPainter::Add(), AliMUONQADataMakerRec::Add2List(), AliTPCCalibViewer::AddAbbreviations(), AliTPCkalmanFit::AddCalibration(), AliTPCPreprocessorOnline::AddComponent(), AliTPCCalibGlobalMisalignment::AddCorrectionCompact(), AliTPCComposedCorrection::AddCorrectionCompact(), AliMUONCDB::AddDCSValue(), AddEffectiveCorrection(), AliTPCCalPad::AddFriend(), AddNodes(), AliMUONPreClusterFinderV2::AddPad(), AliMUONPreClusterFinderV3::AddPad(), AliMUONPreClusterFinder::AddPad(), AliTPCCalibQAChecker::AddSubChecker(), AliMUONTrack::AddTrackParamAtCluster(), AliTPCCorrection::AddVisualCorrection(), AliMpDCSNamer::AliasesAsLdif(), AliMUON::AliMUON(), AliMUON1DArray::AliMUON1DArray(), AliMUONBusPatchPainter::AliMUONBusPatchPainter(), AliMUONChamberPainter::AliMUONChamberPainter(), AliMUONContourHandler::AliMUONContourHandler(), AliMUONDEPainter::AliMUONDEPainter(), AliMUONDigitCalibrator::AliMUONDigitCalibrator(), AliMUONGeometry::AliMUONGeometry(), AliMUONGeometryBuilder::AliMUONGeometryBuilder(), AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(), AliMUONGeometryEnvelopeStore::AliMUONGeometryEnvelopeStore(), AliMUONGeometryTransformer::AliMUONGeometryTransformer(), AliMUONMchViewApplication::AliMUONMchViewApplication(), AliMUONPCBPainter::AliMUONPCBPainter(), AliMUONSurveyObj::AliMUONSurveyObj(), AliMUONTrack::AliMUONTrack(), AliMUONTrackerData::AliMUONTrackerData(), AliMUONVGeometryBuilder::AliMUONVGeometryBuilder(), AliTPCCalibCE::AliTPCCalibCE(), AliTPCCalibViewer::AliTPCCalibViewer(), AliTPCClusterParam::AliTPCClusterParam(), AliTPCCompareTracks(), AliTPCComparison2(), AliTPCCorrection::AliTPCCorrection(), AliTPCCorrectionDemo(), AliTPCParam::AliTPCParam(), AliTPCCalibCE::AnalyseTrack(), AliMUONTrackerQAChecker::BeautifyEventsizeHistograms(), AliMUONTrackerQAChecker::BeautifyOccupancyHistograms(), AliMUONTrackerQAChecker::BeautifyReadoutHistograms(), AliMUONTriggerGUI::Boards(), AliMUONTrackerData::BuildFromBPStore(), AliMUONTrackerData::BuildFromDEStore(), AliMpTriggerReader::BuildSlat(), AliTPCCalibCE::CalculateDV(), CalibFileMerger(), AliMUONCDB::CheckHV(), AliMUONClusterFinderPeakCOG::CheckPreclusterTwoCathodes(), AliMUONClusterFinderPeakFit::CheckPreclusterTwoCathodes(), AliMUONClusterFinderMLEM::CheckPreclusterTwoCathodes(), AliMUONTriggerQAChecker::CheckRaws(), AliMUONLegacyClusterServer::Clusterize(), AliMUONSimpleClusterServer::Clusterize(), AliMUONTrackerHV::CombineMulti(), AliMpDCSNamer::CompactAliases(), AliMUONClusterFinderSimpleFit::ComputePosition(), AliTPCcalibDButil::ConnectCalPadTrees(), AliTPCcalibDButil::ConnectGainTrees(), AliTPCcalibDButil::ConnectPulserTrees(), AliMUONContour::Copy(), AliMUON1DArray::CopyTo(), AliMUONRecoParam::Create(), AliMUONPainterDataSourceFrame::CreateACFDataSource(), AliMUONPainterMatrixFrame::CreateButtons(), AliTPCCalPad::CreateCalPadFit(), AliMUONContourMaker::CreateContour(), AliMUONContourHandler::CreateContourList(), CreateDCSAliasMap(), AliTPCCalPad::CreateFormulaArray(), CreateGainMap(), AliMUONSlatGeometryBuilder::CreateGeometry(), AliMUONGeometryBuilder::CreateGeometryWithoutTGeo(), AliMUONGeometryBuilder::CreateGeometryWithTGeo(), AliMUONTrackerDataHistogrammer::CreateHisto(), AliMUONCalibrationData::CreateHV(), AliMUONTrackerConditionDataMaker::CreateHVStore(), AliMUONDigitizerV3::CreateInputDigitStores(), CreateIonTailObject(), AliTPCCalibGlobalMisalignment::CreateMeanAlign(), AliMUONManuContourMaker::CreateMotifContour(), AliTPCCalibViewer::CreateObjectList(), AliTPCcalibDB::CreateObjectList(), AliTPCCalibGlobalMisalignment::CreateOCDBAlign(), AliMUONPainterDataSourceFrame::CreateRawDataSource(), AliTPCcalibDB::CreateVdriftSplineFit(), CreateWeightedRejectList(), AliMpHelper::Decode(), AliMUONTrackerIO::DecodeGains(), AliMpHelper::DecodeName(), AliMUONPainterEnv::Descriptor2Name(), AliMUONSDigitizerV2::Digitize(), AliMUONTriggerElectronics::Digits2Trigger(), AliTPCCalibViewer::DrawHisto1D(), DrawResoldEdx(), AliTPCCalibGlobalMisalignment::DumpAlignment(), AliTPCPreprocessorOnline::DumpToFile(), AliTPCCalibCE::DumpToFile(), AliTPCPreprocessor::ExtractAltro(), AliTPCPreprocessor::ExtractCE(), AliTPCPreprocessor::ExtractPulser(), AliTPCPreprocessor::ExtractRaw(), AliTPCCorrection::FastSimDistortedVertex(), AliMUONTriggerElectronics::Feed(), AliMUONTriggerElectronics::FeedCopyNeighbours(), AliMUONTriggerChamberEfficiency::FillFromList(), AliMUONTriggerQADataMakerRec::FillTriggerDCSHistos(), AliTPCcalibDButil::FilterCE(), AliTPCcalibDButil::FilterGoofie(), AliXRDPROOFtoolkit::FilterList(), AliXRDPROOFtoolkit::FilterListZip(), AliTPCcalibDButil::FilterTracks(), AliMUONContourMaker::FinalizeContour(), AliMUONClusterFinderPeakFit::FindClusterFit(), AliTPCCalibCE::FindLaserTrackID(), AliTPCCalibCE::FindLocalMaxima(), AliMUONClusterSplitterMLEM::Fit(), AliMagFDraw::Fit(), AliTPCCalibViewer::Fit(), FitKalman(), for(), AliMUONPainterEnv::ForceDataSourceToDefaultRange(), AliMpDCSNamer::GenerateAliases(), AliMUONContourHandler::GenerateAllContours(), AliMUONManuContourMaker::GenerateManuContours(), AliMUONTrackerQADataMakerRec::GetArray(), AliTPCCalibViewer::GetArrayOfCalPads(), AliMpTriggerReader::GetBoardNameFromPCBLine(), AliTPCCalibPedestal::GetCalRocMean(), AliTPCCalibPulser::GetCalRocOutliers(), AliTPCCalibCE::GetCalRocOutliers(), AliTPCCalibPedestal::GetCalRocPedestal(), AliTPCCalibPulser::GetCalRocQ(), AliTPCCalibCE::GetCalRocQ(), AliTPCCalibPedestal::GetCalRocRMS(), AliTPCCalibPulser::GetCalRocRMS(), AliTPCCalibCE::GetCalRocRMS(), AliTPCCalibPedestal::GetCalRocSigma(), AliTPCCalibPulser::GetCalRocT0(), AliTPCCalibCE::GetCalRocT0(), AliTPCCalibCE::GetCalRocT0Err(), AliTPCcalibDB::GetCEfitsDrift(), AliTPCcalibDB::GetCErocQtime(), AliTPCcalibDB::GetCErocTtime(), AliMUON2DStoreValidator::GetChamber(), GetCorrectionFromFile(), AliTPCConfigParser::GetData(), AliMUONQADataMakerRec::GetData(), AliMUONTriggerQADataMakerRec::GetDCSValues(), AliMUONPainterEnv::GetDefaultRange(), AliMUONTreeManager::GetEvent(), AliTPCcalibDB::GetGainCorrectionHVandPT(), AliTPCCalibViewerGUItime::GetHistogramTitle(), AliTPCCalibPedestal::GetHistoPedestal(), AliTPCCalibPulser::GetHistoQ(), AliTPCCalibCE::GetHistoQ(), AliTPCCalibPulser::GetHistoRMS(), AliTPCCalibCE::GetHistoRMS(), AliTPCCalibPulser::GetHistoT0(), AliTPCCalibCE::GetHistoT0(), AliTPCCalibCE::GetHistoTmean(), AliMUONTrackHitPattern::GetHitPattern(), AliTPCcalibDButil::GetLaserTime0(), AliStorageDatabase::GetList(), AliTPCCalibViewer::GetListOfNormalizationVariables(), AliTPCCalibViewer::GetListOfVariables(), AliTPCConfigParser::GetNumberOfValues(), AliTPCCalibPulser::GetPadPedestalEvent(), AliTPCCalibCE::GetPadPedestalEvent(), AliTPCCalibPulser::GetPadQEvent(), AliTPCCalibCE::GetPadQEvent(), AliTPCCalibPulser::GetPadRMSEvent(), AliTPCCalibCE::GetPadRMSEvent(), AliTPCCalibPulser::GetPadTimesEvent(), AliTPCCalibCE::GetPadTimesEvent(), AliTPCCalibCE::GetParamArray(), AliTPCCalibCE::GetParamArrayPol1(), AliTPCCalibCE::GetParamArrayPol2(), AliTPCCalibCE::GetQMeanEvents(), AliMUON::GetRecoParam(), AliTPCcalibDButil::GetRefCalPad(), AliTPCComposedCorrection::GetSubCorrection(), AliTPCcalibDB::GetTailcancelationGraphs(), AliTPCcalibDButil::GetTime0TPCITS(), AliTPCcalibDB::GetTimeGainSplinesRun(), AliTPCcalibDB::GetTimeVdriftSplineRun(), AliTPCCalibCE::GetTMeanEvents(), AliTPCcalibDB::GetTPCComposedCorrectionDelta(), AliMUONTrack::GetTrackParamAtCluster(), AliStorageServerThread::GetTriggerClasses(), AliTPCcalibDButil::GetTriggerOffsetTPC(), AliMUONPainterMatrix::GetTypes(), AliMUONVPainter::GetTypes(), AliTPCConfigParser::GetValue(), AliTPCcalibDB::GetVDriftCorrectionDeltaZ(), AliTPCcalibDB::GetVDriftCorrectionGy(), AliTPCcalibDB::GetVdriftSplineFit(), AliTPCcalibDButil::GetVDriftTPC(), AliTPCcalibDButil::GetVDriftTPCCE(), AliTPCcalibDButil::GetVDriftTPCITS(), AliTPCcalibDButil::GetVDriftTPCLaserTracks(), AliTPCcalibDButil::GetVDriftTPCLaserTracksOnline(), AliTPCCalPad::GlobalSidesFit(), AliMUONTrackerHV::GraphValues(), AliMUONTrackerHV::HVoff(), AliMUONPadStatusMaker::HVSt12Status(), AliMUONPadStatusMaker::HVSt345Status(), AliTPCLaserTrack::IdentifyTrack(), AliTPCdataQA::Init(), AliTPCCalibViewerGUI::Initialize(), InitTPCalign(), AliTPCCalibViewer::Integrate(), AliTPCCalibViewer::IntegrateOld(), AliMUONTrackerDataSourceTypes::IsInAliasList(), AliMUONTrackHitPattern::IsMasked(), AliXRDPROOFtoolkit::JoinTreesIndex(), AliMUONTriggerElectronics::LoadMasks(), LoadModels(), AliMUONCDB::LoadRecoParam(), AliTPCLaserTrack::LoadTracks(), LoadViewer(), AliMUONTriggerElectronics::LocalResponse(), LookupHisto(), Make1PtPlot(), MakeAlignCorrection(), MakeAlignFunctionSector(), AliSegmentArray::MakeArray(), AliXRDPROOFtoolkit::MakeChainRandom(), MakeComposedCorrection(), MakeComposedCorrectionExB(), MakeDistortionMap(), MakeFit(), MakeFits(), MakeFitTree(), MakeGlobalFitRelative(), MakeGraphsdP2(), MakeGraphsdY(), MakeGraphsP4(), AliTPCCalibCE::MakeGraphTimeCE(), AliMUONCDB::MakeHVStore(), MakeLaserTree(), MakeMUONRecoParamArray(), MakeOCDBEntry(), MakePicDy(), MakePickDy(), AliTPCQADataMakerRec::MakeRaws(), AliTPCcalibDButil::MakeRunList(), AliXRDPROOFtoolkit::MakeSetRandom(), MakeStat(), MakeTPCAltroMapping(), MakeTPCRecoParam(), AliTPCCalibViewer::MakeTree(), AliTPCcalibDB::MakeTree(), AliTPCCalibViewer::MakeTreeWithObjects(), MakeZPlot(), AliMUONTrackerQADataMakerRec::MappingCheckRecPoints(), AliMUONCDB::MeanHVValueForDCSAlias(), AliMUONClusterSplitterMLEM::Merge(), AliTPCCalibCE::Merge(), AliMUONContourMaker::MergeContour(), AliTPCCorrectionLookupTable::MergePhiTables(), ModifyRecoParamHLTUsage(), MUONGenerateGentleGeometry(), MUONSurveyCh1(), MUONSurveyCh2(), MUONSurveyCh3(), MUONSurveyCh4(), MUONSurveyCh5(), MUONSurveyCh8L(), AliMUONPreClusterFinder::NextCluster(), AliTPCConfigParser::NextValue(), AliTPCClusterParam::operator=(), AliMUONTrack::operator=(), AliMUONSimpleClusterServer::PadArray(), AliTPCConfigDA::ParseConfigFileTxt(), AliTPCConfigParser::ParseConfigFileTxt(), AliMUONCalibrationData::PatchHVValues(), AliMUONCalibrationData::PatchSt1DCSAliases(), AliMUONTrackHitPattern::PerformTrigTrackMatch(), AliMUONTrackerHV::Plot(), AliMUONContourMakerTest::Plot(), AliMUONTrackerHV::Print(), AliMUONSimpleClusterServer::Print(), AliMUONCluster::Print(), printCalibObjectsInfo(), PrintFit(), AliMUONSurveyChamber::PrintSurveyReport(), AliMUONTriggerDCSSubprocessor::Process(), AliMUONHVSubprocessor::Process(), AliTPCPreprocessor::Process(), AliMUONPedestalSubprocessor::Process(), AliMUONGainSubprocessor::Process(), AliTPCcalibDButil::ProcessCEgraphs(), AliMUONPainterEnv::Ranges2DimensionRange(), RawClustersOk(), AliMpDDLStore::ReadBusPatchInfo(), AliMpDDLStore::ReadBusPatchSpecial(), AliMpManuStore::ReadData(), AliMpDDLStore::ReadDDLs(), AliTPCCalibCE::ReadFromFile(), ReadGainGlobal(), AliMUONTrackerHV::ReadIntegers(), ReadIntegers(), AliMUONCDB::ReadIntegers(), AliMpSectorReader::ReadRowSegmentSpecialData(), ReadRunSetup(), AliMpTriggerReader::ReadSlat(), RebuildCE(), AliMUONVGeometryBuilder::RebuildSVMaps(), ReCalcGlobalTrigger(), RecDigitsOk(), AliMUONTriggerElectronics::RegionalResponse(), RegisterAlignFunction(), RegisterAliTPCBoundaryVoltError(), RegisterAliTPCCalibGlobalMisalignment(), RegisterAliTPCFCVoltError3D(), RegisterAliTPCFCVoltError3DRodFCSideRadiusType(), RegisterAliTPCROCVoltError3D(), RegisterAliTPCROCVoltError3DSector(), AliTPCCalibViewerGUItime::Reload(), AliMUONTrackerHV::ReportTrips(), AliMUONTriggerElectronics::Reset(), AliMUONVQADataMakerRec::ResetDetector(), AliMUONTrackerQADataMakerRec::ResetDetectorRaws(), AliMUONTriggerElectronics::Scan(), AliTPCCalibGlobalMisalignment::SetAlignSectors(), AliMUONPainterEnv::SetDefaultRange(), AliMUONPainterEnv::SetDimensionRange(), AliMUONResponseTriggerV1::SetHV(), AliTPCClusterParam::SetQnorm(), AliTPCCalibQAChecker::SetQualityDescription(), AliMUONTrackerHV::SetRunList(), AliTPCCalibCE::SetupMeasured(), AliMUONRecoParam::Show(), AliTPCCalibViewerGUItime::ShowGUI(), AliTPCCalibViewerGUI::ShowGUI(), AliMUONTreeManager::ShowStatus(), AliTPCCalibViewer::SigmaCut(), AliTPCCalibViewer::SigmaCutNew(), SimDigitsOk(), SimHitsOk(), AliMUONClusterFinderMLEM::Simple(), SimSDigitsOk(), SimTriggersOk(), AliTPCcalibDButil::SmoothRelKalman(), AliMUONClusterSplitterMLEM::Split(), AliMUONContourMaker::Sweep(), AliTPCCalibPulser::TestBinning(), TestCorrection_AliTPCCalibGlobalMisalignmentAddCorrectionCompact(), TestCorrection_AliTPCComposedCorrectionAddCorrectionCompact(), TestCorrection_AliTPCComposedCorrectionAddCorrectionCompact_TPCCalibCorrection(), AliMUONTrackerQADataMakerRec::TrackerCalData(), AliMUONTrackerQADataMakerRec::TrackerDataMaker(), AliMUONTrackerQADataMakerRec::TrackerRecData(), TriggersOk(), AliMpUID::Type(), UnitTestAliTPCCalPadTree(), AliMUONPainterPlotSelector::Update(), AliTPCcalibDB::Update(), AliMUONVGeometryBuilder::UpdateDetElements(), UpdateEffSectorOCDB(), AliMUONVPainter::UpdateGroupsFrom(), AliMUONPainterMatrixFrame::UpdateInterface(), AliTPCcalibDB::UpdateNonRec(), AliTPCcalibDB::UpdateRunInformations(), AliMUONSimpleClusterServer::UseDigits(), AliTPCCalibViewerGUItime::UseFile(), AliMUONContourMaker::VerticalToHorizontal(), visibilityOff(), AliMUONVPainter::WriteIROC(), and AliXRDPROOFtoolkit::XRDCopyDir().

Variable Documentation

return clusterFinder