ROOT logo
#ifndef ALIMUONSIMPLECLUSTERSERVER_H
#define ALIMUONSIMPLECLUSTERSERVER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup rec
/// \class AliMUONSimpleClusterServer
/// \brief Implementation of AliMUONVClusterServer interface
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ALIMUONVCLUSTERSERVER_H
#  include "AliMUONVClusterServer.h"
#endif

class AliMUONGeometryTransformer;
class AliMUONTriggerTrackToTrackerClusters;
class AliMUONVClusterFinder;
class AliMUONCluster;
class AliMpVSegmentation;
class AliMpExMap;
class AliMpExMapIterator;
class TClonesArray;

class AliMUONSimpleClusterServer : public AliMUONVClusterServer
{
public:
  AliMUONSimpleClusterServer(AliMUONVClusterFinder* clusterFinder,
                             const AliMUONGeometryTransformer& transformer);
  
  virtual ~AliMUONSimpleClusterServer();
  
  Int_t Clusterize(Int_t chamberId,
                   AliMUONVClusterStore& clusterStore,
                   const AliMpArea& area,
                   const AliMUONRecoParam* recoParam = 0x0);
  
  void UseDigits(TIter& next, AliMUONVDigitStore* digitStore = 0x0);
  
  void Print(Option_t* opt="") const;

  /// Use trigger tracks. Return kFALSE if not used.
  virtual Bool_t UseTriggerTrackStore(AliMUONVTriggerTrackStore* trackStore);

private:
  /// Not implemented
  AliMUONSimpleClusterServer(const AliMUONSimpleClusterServer& rhs);
  /// Not implemented
  AliMUONSimpleClusterServer& operator=(const AliMUONSimpleClusterServer& rhs);
  
  Bool_t Overlap(Int_t detElemId, const AliMpArea& area, AliMpArea& deArea) const;
    
  void Global2Local(Int_t detElemId, const AliMpArea& globalArea, AliMpArea& localArea) const;

  TObjArray* PadArray(Int_t detElemId, Int_t cathode) const;
  
  Int_t FindMCLabel(const AliMUONCluster& cluster, Int_t detElemId, const AliMpVSegmentation* seg[2]) const;
  
private:
  AliMUONVDigitStore* fDigitStore; //!< the digit store (not owner)
  AliMUONVClusterFinder* fClusterFinder; //!< the cluster finder (owner)
  const AliMUONGeometryTransformer& fkTransformer; //!< the geometry transformer (not owner)
  AliMpExMap* fPads[2]; ///< map of TClonesArray of AliMUONPads
  AliMpExMapIterator* fPadsIterator[2]; ///< iterator for the map of TClonesArray of AliMUONPads
  AliMUONVTriggerTrackStore* fTriggerTrackStore; ///< trigger track store (if bypassing of St45 was requested) (not owner)
  AliMUONTriggerTrackToTrackerClusters* fBypass; ///< to convert trigger track into tracker clusters (owner)
  
  ClassDef(AliMUONSimpleClusterServer,0) // Cluster server
};

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