1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 /// \class AliMUONLegacyClusterServer
20 /// Special implementation of AliMUONVClusterServer, which will only return
21 /// clusters from a pre-defined cluster store.
23 /// Made to recover the old (i.e. before introduction of VClusterServer) behavior
24 /// of the MUON recontruction where rec points were always written to TreeR,
25 /// and then the tracking picked them from that tree, in order to have the
26 /// possibility to save full rec points (for debugging the spectro, mainly, should
27 /// not be an option used during final production).
29 /// \author Laurent Aphecetche, Subatech
32 #include "AliMUONLegacyClusterServer.h"
34 #include "AliCodeTimer.h"
36 #include "AliMUONGeometryTransformer.h"
37 #include "AliMUONTriggerTrackToTrackerClusters.h"
38 #include "AliMUONVCluster.h"
39 #include "AliMUONVClusterStore.h"
40 #include "AliMUONRecoParam.h"
41 #include "AliMpArea.h"
42 #include <TCollection.h>
45 ClassImp(AliMUONLegacyClusterServer)
48 //_____________________________________________________________________________
49 AliMUONLegacyClusterServer::AliMUONLegacyClusterServer(const AliMUONGeometryTransformer& transformer,
50 AliMUONVClusterStore* store,
51 Bool_t bypassSt4, Bool_t bypassSt5)
52 : AliMUONVClusterServer(), fkTransformer(transformer), fClusterStore(store), fTriggerTrackStore(0x0),
54 fBypassSt4(bypassSt4),
57 /// ctor. Mode Read : we'll only server clusters from existing store
60 //_____________________________________________________________________________
61 AliMUONLegacyClusterServer::~AliMUONLegacyClusterServer()
67 //_____________________________________________________________________________
69 AliMUONLegacyClusterServer::Clusterize(Int_t chamberId,
70 AliMUONVClusterStore& clusterStore,
71 const AliMpArea& /*area*/,
72 const AliMUONRecoParam* /*recoParam*/)
74 /// Fills clusterStore with clusters in given chamber
76 /// Return the number of clusters added to clusterStore
78 AliCodeTimerAuto(Form("Chamber %d",chamberId));
80 if ( fBypassSt4 && ( chamberId == 6 || chamberId == 7 ) )
82 return fBypass->GenerateClusters(chamberId,clusterStore);
85 if ( fBypassSt5 && ( chamberId == 8 || chamberId == 9 ) )
87 return fBypass->GenerateClusters(chamberId,clusterStore);
90 AliDebug(1,Form("chamberId=%d fClusterStore(%p).GetSize()=%d clusterStore(%p).GetSize()=%d",
92 fClusterStore,fClusterStore->GetSize(),
93 &clusterStore,clusterStore.GetSize()));
95 TIter next(fClusterStore->CreateChamberIterator(chamberId,chamberId));
96 AliMUONVCluster* cluster;
100 while ( ( cluster = static_cast<AliMUONVCluster*>(next()) ) )
102 clusterStore.Add(*cluster);
108 while ( ( cluster = static_cast<AliMUONVCluster*>(remove()) ) )
110 fClusterStore->Remove(*cluster);
113 AliDebug(1,Form("n=%d remaining clusters=%d",n,fClusterStore->GetSize()));
118 //_____________________________________________________________________________
120 AliMUONLegacyClusterServer::UseTriggerTrackStore(AliMUONVTriggerTrackStore* trackStore)
122 /// Tells us to use trigger track store, and thus to bypass St4 and/or 5 clusters
123 fTriggerTrackStore = trackStore; // not owner
125 fBypass = new AliMUONTriggerTrackToTrackerClusters(fkTransformer,fTriggerTrackStore);
129 //_____________________________________________________________________________
131 AliMUONLegacyClusterServer::UseDigits(TIter&, AliMUONVDigitStore*)
133 /// Give the iterator to our delegate if we have one, of issue and error
135 AliError("Not implemented for this class, as we're not writing clusters, but reading them instead !");