]>
Commit | Line | Data |
---|---|---|
9bf6860b | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
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 | **************************************************************************/ | |
15 | ||
16 | // $Id$ | |
17 | ||
18 | /// \class AliMUONLegacyClusterServer | |
19 | /// | |
20 | /// Special implementation of AliMUONVClusterServer, which will only return | |
21 | /// clusters from a pre-defined cluster store. | |
22 | /// | |
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). | |
28 | /// | |
29 | /// \author Laurent Aphecetche, Subatech | |
30 | /// | |
31 | ||
32 | #include "AliMUONLegacyClusterServer.h" | |
33 | ||
34 | #include "AliCodeTimer.h" | |
35 | #include "AliLog.h" | |
36 | #include "AliMUONGeometryTransformer.h" | |
37 | #include "AliMUONTriggerTrackToTrackerClusters.h" | |
38 | #include "AliMUONVCluster.h" | |
39 | #include "AliMUONVClusterStore.h" | |
35be7ed7 | 40 | #include "AliMUONRecoParam.h" |
9bf6860b | 41 | #include "AliMpArea.h" |
42 | #include <TCollection.h> | |
43 | ||
44 | /// \cond CLASSIMP | |
45 | ClassImp(AliMUONLegacyClusterServer) | |
46 | /// \endcond | |
47 | ||
48 | //_____________________________________________________________________________ | |
de487b6e | 49 | AliMUONLegacyClusterServer::AliMUONLegacyClusterServer(const AliMUONGeometryTransformer& transformer, |
50 | AliMUONVClusterStore* store, | |
51 | Bool_t bypassSt4, Bool_t bypassSt5) | |
72dae9ff | 52 | : AliMUONVClusterServer(), fkTransformer(transformer), fClusterStore(store), fTriggerTrackStore(0x0), |
de487b6e | 53 | fBypass(0x0), |
54 | fBypassSt4(bypassSt4), | |
55 | fBypassSt5(bypassSt5) | |
9bf6860b | 56 | { |
57 | /// ctor. Mode Read : we'll only server clusters from existing store | |
58 | } | |
59 | ||
60 | //_____________________________________________________________________________ | |
61 | AliMUONLegacyClusterServer::~AliMUONLegacyClusterServer() | |
62 | { | |
63 | /// dtor | |
64 | delete fBypass; | |
65 | } | |
66 | ||
67 | //_____________________________________________________________________________ | |
68 | Int_t | |
69 | AliMUONLegacyClusterServer::Clusterize(Int_t chamberId, | |
70 | AliMUONVClusterStore& clusterStore, | |
35be7ed7 | 71 | const AliMpArea& /*area*/, |
72 | const AliMUONRecoParam* /*recoParam*/) | |
9bf6860b | 73 | { |
74 | /// Fills clusterStore with clusters in given chamber | |
75 | /// | |
76 | /// Return the number of clusters added to clusterStore | |
77 | ||
78 | AliCodeTimerAuto(Form("Chamber %d",chamberId)); | |
79 | ||
de487b6e | 80 | if ( fBypassSt4 && ( chamberId == 6 || chamberId == 7 ) ) |
9bf6860b | 81 | { |
82 | return fBypass->GenerateClusters(chamberId,clusterStore); | |
83 | } | |
de487b6e | 84 | |
85 | if ( fBypassSt5 && ( chamberId == 8 || chamberId == 9 ) ) | |
86 | { | |
87 | return fBypass->GenerateClusters(chamberId,clusterStore); | |
88 | } | |
89 | ||
9bf6860b | 90 | AliDebug(1,Form("chamberId=%d fClusterStore(%p).GetSize()=%d clusterStore(%p).GetSize()=%d", |
91 | chamberId, | |
92 | fClusterStore,fClusterStore->GetSize(), | |
93 | &clusterStore,clusterStore.GetSize())); | |
94 | ||
95 | TIter next(fClusterStore->CreateChamberIterator(chamberId,chamberId)); | |
96 | AliMUONVCluster* cluster; | |
97 | Int_t n(0); | |
98 | TObjArray a; | |
99 | ||
100 | while ( ( cluster = static_cast<AliMUONVCluster*>(next()) ) ) | |
101 | { | |
102 | clusterStore.Add(*cluster); | |
103 | a.Add(cluster); | |
104 | ++n; | |
105 | } | |
106 | ||
107 | TIter remove(&a); | |
108 | while ( ( cluster = static_cast<AliMUONVCluster*>(remove()) ) ) | |
109 | { | |
110 | fClusterStore->Remove(*cluster); | |
111 | } | |
112 | ||
113 | AliDebug(1,Form("n=%d remaining clusters=%d",n,fClusterStore->GetSize())); | |
114 | ||
115 | return n; | |
116 | } | |
117 | ||
118 | //_____________________________________________________________________________ | |
119 | Bool_t | |
120 | AliMUONLegacyClusterServer::UseTriggerTrackStore(AliMUONVTriggerTrackStore* trackStore) | |
121 | { | |
de487b6e | 122 | /// Tells us to use trigger track store, and thus to bypass St4 and/or 5 clusters |
9bf6860b | 123 | fTriggerTrackStore = trackStore; // not owner |
124 | delete fBypass; | |
72dae9ff | 125 | fBypass = new AliMUONTriggerTrackToTrackerClusters(fkTransformer,fTriggerTrackStore); |
9bf6860b | 126 | return kTRUE; |
127 | } | |
128 | ||
129 | //_____________________________________________________________________________ | |
130 | void | |
2e2d0c44 | 131 | AliMUONLegacyClusterServer::UseDigits(TIter&, AliMUONVDigitStore*) |
9bf6860b | 132 | { |
133 | /// Give the iterator to our delegate if we have one, of issue and error | |
134 | ||
135 | AliError("Not implemented for this class, as we're not writing clusters, but reading them instead !"); | |
136 | } | |
137 |