ROOT logo
/* Copyright(c) 2004-2006, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//====================================================================================================================================================
//
//      Class for finding and building the clusters of the ALICE Muon Forward Tracker
//
//      Contact author: antonio.uras@cern.ch
//
//====================================================================================================================================================

#ifndef AliMFTClusterFinder_H
#define AliMFTClusterFinder_H

#include "AliLog.h"
#include "TObjArray.h"
#include "TClonesArray.h"
#include "AliMFTDigit.h"
#include "AliMFTCluster.h"
#include "AliMFTSegmentation.h"
#include "TTree.h"
#include "TMath.h"
#include "AliMFTConstants.h"
#include "TStopwatch.h"

//====================================================================================================================================================

class AliMFTClusterFinder : public TObject {

public:

  AliMFTClusterFinder();
  ~AliMFTClusterFinder();
  virtual void Clear(const Option_t* /*opt*/);
  void Init(const Char_t *nameGeomFile);
  
  void MakeClusterBranch(TTree *treeCluster);
  void SetClusterTreeAddress(TTree *treeCluster);
  void CreateClusters();

  void ApplyMisalignment(Bool_t applyMisalignment) { fApplyMisalignment = applyMisalignment; }

  void DigitsToClusters(const TObjArray *pDigitList);

  void StartEvent();

private:
 
  static const Int_t fNMaxDigitsPerCluster = AliMFTConstants::fNMaxDigitsPerCluster;
  static const Int_t fNMaxPlanes = AliMFTConstants::fNMaxPlanes;
  static const Int_t fNMaxDetElemPerPlane = AliMFTConstants::fNMaxDetElemPerPlane;
  static const Double_t fCutForAvailableDigits;
  static const Double_t fCutForAttachingDigits;
  static const Double_t fMisalignmentMagnitude;

  TClonesArray *fClustersPerPlane[fNMaxPlanes];    //! [fNPlanes] list of clusters [per plane]

  TClonesArray *fDigitsInCluster;                  //!
  AliMFTDigit *fCurrentDigit;                      //!
  AliMFTCluster *fCurrentCluster;                  //!

  AliMFTSegmentation *fSegmentation;               //!
 
  Int_t fNPlanes;

  Bool_t fApplyMisalignment;                       // For MC, waiting for OCDB...

  TStopwatch *fStopWatch;                          //!

  AliMFTClusterFinder(const AliMFTClusterFinder &source);
  AliMFTClusterFinder& operator=(const AliMFTClusterFinder &source);

  ClassDef(AliMFTClusterFinder,1) 

};

//====================================================================================================================================================

#endif
 AliMFTClusterFinder.h:1
 AliMFTClusterFinder.h:2
 AliMFTClusterFinder.h:3
 AliMFTClusterFinder.h:4
 AliMFTClusterFinder.h:5
 AliMFTClusterFinder.h:6
 AliMFTClusterFinder.h:7
 AliMFTClusterFinder.h:8
 AliMFTClusterFinder.h:9
 AliMFTClusterFinder.h:10
 AliMFTClusterFinder.h:11
 AliMFTClusterFinder.h:12
 AliMFTClusterFinder.h:13
 AliMFTClusterFinder.h:14
 AliMFTClusterFinder.h:15
 AliMFTClusterFinder.h:16
 AliMFTClusterFinder.h:17
 AliMFTClusterFinder.h:18
 AliMFTClusterFinder.h:19
 AliMFTClusterFinder.h:20
 AliMFTClusterFinder.h:21
 AliMFTClusterFinder.h:22
 AliMFTClusterFinder.h:23
 AliMFTClusterFinder.h:24
 AliMFTClusterFinder.h:25
 AliMFTClusterFinder.h:26
 AliMFTClusterFinder.h:27
 AliMFTClusterFinder.h:28
 AliMFTClusterFinder.h:29
 AliMFTClusterFinder.h:30
 AliMFTClusterFinder.h:31
 AliMFTClusterFinder.h:32
 AliMFTClusterFinder.h:33
 AliMFTClusterFinder.h:34
 AliMFTClusterFinder.h:35
 AliMFTClusterFinder.h:36
 AliMFTClusterFinder.h:37
 AliMFTClusterFinder.h:38
 AliMFTClusterFinder.h:39
 AliMFTClusterFinder.h:40
 AliMFTClusterFinder.h:41
 AliMFTClusterFinder.h:42
 AliMFTClusterFinder.h:43
 AliMFTClusterFinder.h:44
 AliMFTClusterFinder.h:45
 AliMFTClusterFinder.h:46
 AliMFTClusterFinder.h:47
 AliMFTClusterFinder.h:48
 AliMFTClusterFinder.h:49
 AliMFTClusterFinder.h:50
 AliMFTClusterFinder.h:51
 AliMFTClusterFinder.h:52
 AliMFTClusterFinder.h:53
 AliMFTClusterFinder.h:54
 AliMFTClusterFinder.h:55
 AliMFTClusterFinder.h:56
 AliMFTClusterFinder.h:57
 AliMFTClusterFinder.h:58
 AliMFTClusterFinder.h:59
 AliMFTClusterFinder.h:60
 AliMFTClusterFinder.h:61
 AliMFTClusterFinder.h:62
 AliMFTClusterFinder.h:63
 AliMFTClusterFinder.h:64
 AliMFTClusterFinder.h:65
 AliMFTClusterFinder.h:66
 AliMFTClusterFinder.h:67
 AliMFTClusterFinder.h:68
 AliMFTClusterFinder.h:69
 AliMFTClusterFinder.h:70
 AliMFTClusterFinder.h:71
 AliMFTClusterFinder.h:72
 AliMFTClusterFinder.h:73
 AliMFTClusterFinder.h:74
 AliMFTClusterFinder.h:75
 AliMFTClusterFinder.h:76
 AliMFTClusterFinder.h:77
 AliMFTClusterFinder.h:78
 AliMFTClusterFinder.h:79