]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONLegacyClusterServer.cxx
Fixing STRING_OVERFLOW defect reported by Coverity
[u/mrichter/AliRoot.git] / MUON / AliMUONLegacyClusterServer.cxx
CommitLineData
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
45ClassImp(AliMUONLegacyClusterServer)
46/// \endcond
47
48//_____________________________________________________________________________
de487b6e 49AliMUONLegacyClusterServer::AliMUONLegacyClusterServer(const AliMUONGeometryTransformer& transformer,
50 AliMUONVClusterStore* store,
51 Bool_t bypassSt4, Bool_t bypassSt5)
72dae9ff 52: AliMUONVClusterServer(), fkTransformer(transformer), fClusterStore(store), fTriggerTrackStore(0x0),
de487b6e 53fBypass(0x0),
54fBypassSt4(bypassSt4),
55fBypassSt5(bypassSt5)
9bf6860b 56{
57 /// ctor. Mode Read : we'll only server clusters from existing store
58}
59
60//_____________________________________________________________________________
61AliMUONLegacyClusterServer::~AliMUONLegacyClusterServer()
62{
63 /// dtor
64 delete fBypass;
65}
66
67//_____________________________________________________________________________
68Int_t
69AliMUONLegacyClusterServer::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
99c136e1 78 AliCodeTimerAuto(Form("Chamber %d",chamberId),0);
9bf6860b 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//_____________________________________________________________________________
119Bool_t
120AliMUONLegacyClusterServer::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//_____________________________________________________________________________
130void
2e2d0c44 131AliMUONLegacyClusterServer::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