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 "AliMpArea.h"
41 #include <TCollection.h>
44 ClassImp(AliMUONLegacyClusterServer)
47 //_____________________________________________________________________________
48 AliMUONLegacyClusterServer::AliMUONLegacyClusterServer(const AliMUONGeometryTransformer& transformer, AliMUONVClusterStore* store)
49 : AliMUONVClusterServer(), fTransformer(transformer), fClusterStore(store), fTriggerTrackStore(0x0),
52 /// ctor. Mode Read : we'll only server clusters from existing store
55 //_____________________________________________________________________________
56 AliMUONLegacyClusterServer::~AliMUONLegacyClusterServer()
62 //_____________________________________________________________________________
64 AliMUONLegacyClusterServer::Clusterize(Int_t chamberId,
65 AliMUONVClusterStore& clusterStore,
66 const AliMpArea& /*area*/)
68 /// Fills clusterStore with clusters in given chamber
70 /// Return the number of clusters added to clusterStore
72 AliCodeTimerAuto(Form("Chamber %d",chamberId));
74 if ( fBypass && chamberId >= 6 )
76 return fBypass->GenerateClusters(chamberId,clusterStore);
79 AliDebug(1,Form("chamberId=%d fClusterStore(%p).GetSize()=%d clusterStore(%p).GetSize()=%d",
81 fClusterStore,fClusterStore->GetSize(),
82 &clusterStore,clusterStore.GetSize()));
84 TIter next(fClusterStore->CreateChamberIterator(chamberId,chamberId));
85 AliMUONVCluster* cluster;
89 while ( ( cluster = static_cast<AliMUONVCluster*>(next()) ) )
91 clusterStore.Add(*cluster);
97 while ( ( cluster = static_cast<AliMUONVCluster*>(remove()) ) )
99 fClusterStore->Remove(*cluster);
102 AliDebug(1,Form("n=%d remaining clusters=%d",n,fClusterStore->GetSize()));
107 //_____________________________________________________________________________
109 AliMUONLegacyClusterServer::UseTriggerTrackStore(AliMUONVTriggerTrackStore* trackStore)
111 /// Tells us to use trigger track store, and thus to bypass St45 clusters
112 fTriggerTrackStore = trackStore; // not owner
114 fBypass = new AliMUONTriggerTrackToTrackerClusters(fTransformer,fTriggerTrackStore);
118 //_____________________________________________________________________________
120 AliMUONLegacyClusterServer::UseDigits(TIter&)
122 /// Give the iterator to our delegate if we have one, of issue and error
124 AliError("Not implemented for this class, as we're not writing clusters, but reading them instead !");