#include "AliMUONPreClusterFinderV3.h"
#include "AliLog.h"
#include "AliMUONCluster.h"
#include "AliMpVSegmentation.h"
#include "TObjArray.h"
#include "AliMpArea.h"
#include "TVector2.h"
#include "AliMUONPad.h"
#include "AliMUONVDigit.h"
#include "AliMUONVDigitStore.h"
#include <Riostream.h>
using std::endl;
using std::cout;
ClassImp(AliMUONPreClusterFinderV3)
AliMUONPreClusterFinderV3::AliMUONPreClusterFinderV3()
: AliMUONVClusterFinder(),
fClusters(new TClonesArray("AliMUONCluster",10)),
fkSegmentations(0x0),
fPads(0x0),
fDetElemId(0),
fIterator(0x0)
{
AliInfo("");
for ( Int_t i = 0; i < 2; ++i )
{
fPreClusters[i] = new TClonesArray("AliMUONCluster",10);
}
}
AliMUONPreClusterFinderV3::~AliMUONPreClusterFinderV3()
{
delete fClusters;
for ( Int_t i = 0; i < 2; ++i )
{
delete fPreClusters[i];
}
}
Bool_t
AliMUONPreClusterFinderV3::UsePad(const AliMUONPad& pad)
{
if ( pad.DetElemId() != fDetElemId )
{
AliError(Form("Cannot add pad from DE %d to this cluster finder which is "
"currently dealing with DE %d",pad.DetElemId(),fDetElemId));
return kFALSE;
}
AliMUONPad* p = new AliMUONPad(pad);
p->SetClusterId(-1);
fPads[pad.Cathode()]->Add(p);
return kTRUE;
}
Bool_t
AliMUONPreClusterFinderV3::Prepare(Int_t detElemId,
TObjArray* pads[2],
const AliMpArea& area,
const AliMpVSegmentation* seg[2])
{
if ( area.IsValid() )
{
AliError("Handling of area not yet implemented for this class. Please check.");
}
fkSegmentations = seg;
fPads = pads;
fClusters->Clear("C");
for ( Int_t i = 0; i < 2; ++i )
{
fPreClusters[i]->Clear("C");
}
fDetElemId = detElemId;
if ( fPads[0]->GetLast() < 0 && fPads[1]->GetLast() < 0 )
{
return kFALSE;
}
MakeCathodePreClusters(0);
MakeCathodePreClusters(1);
MakeClusters();
delete fIterator;
fIterator = fClusters->MakeIterator();
return kTRUE;
}
void
AliMUONPreClusterFinderV3::DumpPreClusters() const
{
AliMUONCluster *c;
TIter next0(fPreClusters[0]);
TIter next1(fPreClusters[1]);
cout << "Cath0" << endl;
while ( ( c = static_cast<AliMUONCluster*>(next0())) )
{
cout << c->AsString().Data() << endl;
}
cout << "Cath1" << endl;
while ( ( c = static_cast<AliMUONCluster*>(next1())) )
{
cout << c->AsString().Data() << endl;
}
}
void
AliMUONPreClusterFinderV3::AddPreCluster(AliMUONCluster& cluster, AliMUONCluster* preCluster)
{
AliMUONCluster a(*preCluster);
Int_t cathode = preCluster->Cathode();
if ( cathode < 0 ) {
AliError(Form("Cathod undefined: %d",cathode));
AliFatal("");
return;
}
if ( cathode <=1 && !fPreClusters[cathode]->Remove(preCluster) )
{
AliError(Form("Could not remove %s from preclusters[%d]",
preCluster->AsString().Data(),cathode));
StdoutToAliDebug(1,DumpPreClusters());
AliFatal("");
return;
}
cluster.AddCluster(a);
TIter next(fPreClusters[1-cathode]);
AliMUONCluster* testCluster;
while ( ( testCluster = static_cast<AliMUONCluster*>(next())))
{
if ( AliMUONCluster::AreOverlapping(a,*testCluster) )
{
AddPreCluster(cluster,testCluster);
}
}
}
void
AliMUONPreClusterFinderV3::AddPad(AliMUONCluster& cluster, AliMUONPad* pad)
{
AliMUONPad* addedPad = cluster.AddPad(*pad);
Int_t cathode = pad->Cathode();
TObjArray& padArray = *fPads[cathode];
delete padArray.Remove(pad);
TIter next(&padArray);
AliMUONPad* testPad;
while ( ( testPad = static_cast<AliMUONPad*>(next())))
{
if ( AliMUONPad::AreNeighbours(*testPad,*addedPad) )
{
AddPad(cluster,testPad);
}
}
}
AliMUONCluster*
AliMUONPreClusterFinderV3::NextCluster()
{
return static_cast<AliMUONCluster*>(fIterator->Next());
}
void
AliMUONPreClusterFinderV3::MakeClusters()
{
for ( Int_t cathode = 0; cathode < 2; ++cathode )
{
TClonesArray& preclusters = *(fPreClusters[cathode]);
TIter next(&preclusters);
AliMUONCluster* preCluster(0x0);
while ( ( preCluster = static_cast<AliMUONCluster*>(next()) ) )
{
Int_t id(fClusters->GetLast()+1);
AliMUONCluster* cluster = new((*fClusters)[id]) AliMUONCluster;
cluster->SetUniqueID(id);
AddPreCluster(*cluster,preCluster);
}
}
}
void
AliMUONPreClusterFinderV3::MakeCathodePreClusters(Int_t cathode)
{
while ( fPads[cathode]->GetLast() > 0 )
{
TIter next(fPads[cathode]);
AliMUONPad* pad = static_cast<AliMUONPad*>(next());
if (!pad) AliFatal("");
Int_t id = fPreClusters[cathode]->GetLast()+1;
AliMUONCluster* cluster = new ((*fPreClusters[cathode])[id]) AliMUONCluster;
cluster->SetUniqueID(id);
AddPad(*cluster,pad);
if ( cluster->Multiplicity() <= 1 )
{
if ( cluster->Multiplicity() == 0 )
{
AliWarning("Got an empty cluster...");
}
fPreClusters[cathode]->Remove(cluster);
}
}
}
AliMUONPreClusterFinderV3.cxx:1 AliMUONPreClusterFinderV3.cxx:2 AliMUONPreClusterFinderV3.cxx:3 AliMUONPreClusterFinderV3.cxx:4 AliMUONPreClusterFinderV3.cxx:5 AliMUONPreClusterFinderV3.cxx:6 AliMUONPreClusterFinderV3.cxx:7 AliMUONPreClusterFinderV3.cxx:8 AliMUONPreClusterFinderV3.cxx:9 AliMUONPreClusterFinderV3.cxx:10 AliMUONPreClusterFinderV3.cxx:11 AliMUONPreClusterFinderV3.cxx:12 AliMUONPreClusterFinderV3.cxx:13 AliMUONPreClusterFinderV3.cxx:14 AliMUONPreClusterFinderV3.cxx:15 AliMUONPreClusterFinderV3.cxx:16 AliMUONPreClusterFinderV3.cxx:17 AliMUONPreClusterFinderV3.cxx:18 AliMUONPreClusterFinderV3.cxx:19 AliMUONPreClusterFinderV3.cxx:20 AliMUONPreClusterFinderV3.cxx:21 AliMUONPreClusterFinderV3.cxx:22 AliMUONPreClusterFinderV3.cxx:23 AliMUONPreClusterFinderV3.cxx:24 AliMUONPreClusterFinderV3.cxx:25 AliMUONPreClusterFinderV3.cxx:26 AliMUONPreClusterFinderV3.cxx:27 AliMUONPreClusterFinderV3.cxx:28 AliMUONPreClusterFinderV3.cxx:29 AliMUONPreClusterFinderV3.cxx:30 AliMUONPreClusterFinderV3.cxx:31 AliMUONPreClusterFinderV3.cxx:32 AliMUONPreClusterFinderV3.cxx:33 AliMUONPreClusterFinderV3.cxx:34 AliMUONPreClusterFinderV3.cxx:35 AliMUONPreClusterFinderV3.cxx:36 AliMUONPreClusterFinderV3.cxx:37 AliMUONPreClusterFinderV3.cxx:38 AliMUONPreClusterFinderV3.cxx:39 AliMUONPreClusterFinderV3.cxx:40 AliMUONPreClusterFinderV3.cxx:41 AliMUONPreClusterFinderV3.cxx:42 AliMUONPreClusterFinderV3.cxx:43 AliMUONPreClusterFinderV3.cxx:44 AliMUONPreClusterFinderV3.cxx:45 AliMUONPreClusterFinderV3.cxx:46 AliMUONPreClusterFinderV3.cxx:47 AliMUONPreClusterFinderV3.cxx:48 AliMUONPreClusterFinderV3.cxx:49 AliMUONPreClusterFinderV3.cxx:50 AliMUONPreClusterFinderV3.cxx:51 AliMUONPreClusterFinderV3.cxx:52 AliMUONPreClusterFinderV3.cxx:53 AliMUONPreClusterFinderV3.cxx:54 AliMUONPreClusterFinderV3.cxx:55 AliMUONPreClusterFinderV3.cxx:56 AliMUONPreClusterFinderV3.cxx:57 AliMUONPreClusterFinderV3.cxx:58 AliMUONPreClusterFinderV3.cxx:59 AliMUONPreClusterFinderV3.cxx:60 AliMUONPreClusterFinderV3.cxx:61 AliMUONPreClusterFinderV3.cxx:62 AliMUONPreClusterFinderV3.cxx:63 AliMUONPreClusterFinderV3.cxx:64 AliMUONPreClusterFinderV3.cxx:65 AliMUONPreClusterFinderV3.cxx:66 AliMUONPreClusterFinderV3.cxx:67 AliMUONPreClusterFinderV3.cxx:68 AliMUONPreClusterFinderV3.cxx:69 AliMUONPreClusterFinderV3.cxx:70 AliMUONPreClusterFinderV3.cxx:71 AliMUONPreClusterFinderV3.cxx:72 AliMUONPreClusterFinderV3.cxx:73 AliMUONPreClusterFinderV3.cxx:74 AliMUONPreClusterFinderV3.cxx:75 AliMUONPreClusterFinderV3.cxx:76 AliMUONPreClusterFinderV3.cxx:77 AliMUONPreClusterFinderV3.cxx:78 AliMUONPreClusterFinderV3.cxx:79 AliMUONPreClusterFinderV3.cxx:80 AliMUONPreClusterFinderV3.cxx:81 AliMUONPreClusterFinderV3.cxx:82 AliMUONPreClusterFinderV3.cxx:83 AliMUONPreClusterFinderV3.cxx:84 AliMUONPreClusterFinderV3.cxx:85 AliMUONPreClusterFinderV3.cxx:86 AliMUONPreClusterFinderV3.cxx:87 AliMUONPreClusterFinderV3.cxx:88 AliMUONPreClusterFinderV3.cxx:89 AliMUONPreClusterFinderV3.cxx:90 AliMUONPreClusterFinderV3.cxx:91 AliMUONPreClusterFinderV3.cxx:92 AliMUONPreClusterFinderV3.cxx:93 AliMUONPreClusterFinderV3.cxx:94 AliMUONPreClusterFinderV3.cxx:95 AliMUONPreClusterFinderV3.cxx:96 AliMUONPreClusterFinderV3.cxx:97 AliMUONPreClusterFinderV3.cxx:98 AliMUONPreClusterFinderV3.cxx:99 AliMUONPreClusterFinderV3.cxx:100 AliMUONPreClusterFinderV3.cxx:101 AliMUONPreClusterFinderV3.cxx:102 AliMUONPreClusterFinderV3.cxx:103 AliMUONPreClusterFinderV3.cxx:104 AliMUONPreClusterFinderV3.cxx:105 AliMUONPreClusterFinderV3.cxx:106 AliMUONPreClusterFinderV3.cxx:107 AliMUONPreClusterFinderV3.cxx:108 AliMUONPreClusterFinderV3.cxx:109 AliMUONPreClusterFinderV3.cxx:110 AliMUONPreClusterFinderV3.cxx:111 AliMUONPreClusterFinderV3.cxx:112 AliMUONPreClusterFinderV3.cxx:113 AliMUONPreClusterFinderV3.cxx:114 AliMUONPreClusterFinderV3.cxx:115 AliMUONPreClusterFinderV3.cxx:116 AliMUONPreClusterFinderV3.cxx:117 AliMUONPreClusterFinderV3.cxx:118 AliMUONPreClusterFinderV3.cxx:119 AliMUONPreClusterFinderV3.cxx:120 AliMUONPreClusterFinderV3.cxx:121 AliMUONPreClusterFinderV3.cxx:122 AliMUONPreClusterFinderV3.cxx:123 AliMUONPreClusterFinderV3.cxx:124 AliMUONPreClusterFinderV3.cxx:125 AliMUONPreClusterFinderV3.cxx:126 AliMUONPreClusterFinderV3.cxx:127 AliMUONPreClusterFinderV3.cxx:128 AliMUONPreClusterFinderV3.cxx:129 AliMUONPreClusterFinderV3.cxx:130 AliMUONPreClusterFinderV3.cxx:131 AliMUONPreClusterFinderV3.cxx:132 AliMUONPreClusterFinderV3.cxx:133 AliMUONPreClusterFinderV3.cxx:134 AliMUONPreClusterFinderV3.cxx:135 AliMUONPreClusterFinderV3.cxx:136 AliMUONPreClusterFinderV3.cxx:137 AliMUONPreClusterFinderV3.cxx:138 AliMUONPreClusterFinderV3.cxx:139 AliMUONPreClusterFinderV3.cxx:140 AliMUONPreClusterFinderV3.cxx:141 AliMUONPreClusterFinderV3.cxx:142 AliMUONPreClusterFinderV3.cxx:143 AliMUONPreClusterFinderV3.cxx:144 AliMUONPreClusterFinderV3.cxx:145 AliMUONPreClusterFinderV3.cxx:146 AliMUONPreClusterFinderV3.cxx:147 AliMUONPreClusterFinderV3.cxx:148 AliMUONPreClusterFinderV3.cxx:149 AliMUONPreClusterFinderV3.cxx:150 AliMUONPreClusterFinderV3.cxx:151 AliMUONPreClusterFinderV3.cxx:152 AliMUONPreClusterFinderV3.cxx:153 AliMUONPreClusterFinderV3.cxx:154 AliMUONPreClusterFinderV3.cxx:155 AliMUONPreClusterFinderV3.cxx:156 AliMUONPreClusterFinderV3.cxx:157 AliMUONPreClusterFinderV3.cxx:158 AliMUONPreClusterFinderV3.cxx:159 AliMUONPreClusterFinderV3.cxx:160 AliMUONPreClusterFinderV3.cxx:161 AliMUONPreClusterFinderV3.cxx:162 AliMUONPreClusterFinderV3.cxx:163 AliMUONPreClusterFinderV3.cxx:164 AliMUONPreClusterFinderV3.cxx:165 AliMUONPreClusterFinderV3.cxx:166 AliMUONPreClusterFinderV3.cxx:167 AliMUONPreClusterFinderV3.cxx:168 AliMUONPreClusterFinderV3.cxx:169 AliMUONPreClusterFinderV3.cxx:170 AliMUONPreClusterFinderV3.cxx:171 AliMUONPreClusterFinderV3.cxx:172 AliMUONPreClusterFinderV3.cxx:173 AliMUONPreClusterFinderV3.cxx:174 AliMUONPreClusterFinderV3.cxx:175 AliMUONPreClusterFinderV3.cxx:176 AliMUONPreClusterFinderV3.cxx:177 AliMUONPreClusterFinderV3.cxx:178 AliMUONPreClusterFinderV3.cxx:179 AliMUONPreClusterFinderV3.cxx:180 AliMUONPreClusterFinderV3.cxx:181 AliMUONPreClusterFinderV3.cxx:182 AliMUONPreClusterFinderV3.cxx:183 AliMUONPreClusterFinderV3.cxx:184 AliMUONPreClusterFinderV3.cxx:185 AliMUONPreClusterFinderV3.cxx:186 AliMUONPreClusterFinderV3.cxx:187 AliMUONPreClusterFinderV3.cxx:188 AliMUONPreClusterFinderV3.cxx:189 AliMUONPreClusterFinderV3.cxx:190 AliMUONPreClusterFinderV3.cxx:191 AliMUONPreClusterFinderV3.cxx:192 AliMUONPreClusterFinderV3.cxx:193 AliMUONPreClusterFinderV3.cxx:194 AliMUONPreClusterFinderV3.cxx:195 AliMUONPreClusterFinderV3.cxx:196 AliMUONPreClusterFinderV3.cxx:197 AliMUONPreClusterFinderV3.cxx:198 AliMUONPreClusterFinderV3.cxx:199 AliMUONPreClusterFinderV3.cxx:200 AliMUONPreClusterFinderV3.cxx:201 AliMUONPreClusterFinderV3.cxx:202 AliMUONPreClusterFinderV3.cxx:203 AliMUONPreClusterFinderV3.cxx:204 AliMUONPreClusterFinderV3.cxx:205 AliMUONPreClusterFinderV3.cxx:206 AliMUONPreClusterFinderV3.cxx:207 AliMUONPreClusterFinderV3.cxx:208 AliMUONPreClusterFinderV3.cxx:209 AliMUONPreClusterFinderV3.cxx:210 AliMUONPreClusterFinderV3.cxx:211 AliMUONPreClusterFinderV3.cxx:212 AliMUONPreClusterFinderV3.cxx:213 AliMUONPreClusterFinderV3.cxx:214 AliMUONPreClusterFinderV3.cxx:215 AliMUONPreClusterFinderV3.cxx:216 AliMUONPreClusterFinderV3.cxx:217 AliMUONPreClusterFinderV3.cxx:218 AliMUONPreClusterFinderV3.cxx:219 AliMUONPreClusterFinderV3.cxx:220 AliMUONPreClusterFinderV3.cxx:221 AliMUONPreClusterFinderV3.cxx:222 AliMUONPreClusterFinderV3.cxx:223 AliMUONPreClusterFinderV3.cxx:224 AliMUONPreClusterFinderV3.cxx:225 AliMUONPreClusterFinderV3.cxx:226 AliMUONPreClusterFinderV3.cxx:227 AliMUONPreClusterFinderV3.cxx:228 AliMUONPreClusterFinderV3.cxx:229 AliMUONPreClusterFinderV3.cxx:230 AliMUONPreClusterFinderV3.cxx:231 AliMUONPreClusterFinderV3.cxx:232 AliMUONPreClusterFinderV3.cxx:233 AliMUONPreClusterFinderV3.cxx:234 AliMUONPreClusterFinderV3.cxx:235 AliMUONPreClusterFinderV3.cxx:236 AliMUONPreClusterFinderV3.cxx:237 AliMUONPreClusterFinderV3.cxx:238 AliMUONPreClusterFinderV3.cxx:239 AliMUONPreClusterFinderV3.cxx:240 AliMUONPreClusterFinderV3.cxx:241 AliMUONPreClusterFinderV3.cxx:242 AliMUONPreClusterFinderV3.cxx:243 AliMUONPreClusterFinderV3.cxx:244 AliMUONPreClusterFinderV3.cxx:245 AliMUONPreClusterFinderV3.cxx:246 AliMUONPreClusterFinderV3.cxx:247 AliMUONPreClusterFinderV3.cxx:248 AliMUONPreClusterFinderV3.cxx:249 AliMUONPreClusterFinderV3.cxx:250 AliMUONPreClusterFinderV3.cxx:251 AliMUONPreClusterFinderV3.cxx:252 AliMUONPreClusterFinderV3.cxx:253 AliMUONPreClusterFinderV3.cxx:254 AliMUONPreClusterFinderV3.cxx:255 AliMUONPreClusterFinderV3.cxx:256 AliMUONPreClusterFinderV3.cxx:257 AliMUONPreClusterFinderV3.cxx:258 AliMUONPreClusterFinderV3.cxx:259 AliMUONPreClusterFinderV3.cxx:260 AliMUONPreClusterFinderV3.cxx:261 AliMUONPreClusterFinderV3.cxx:262 AliMUONPreClusterFinderV3.cxx:263 AliMUONPreClusterFinderV3.cxx:264 AliMUONPreClusterFinderV3.cxx:265 AliMUONPreClusterFinderV3.cxx:266 AliMUONPreClusterFinderV3.cxx:267 AliMUONPreClusterFinderV3.cxx:268 AliMUONPreClusterFinderV3.cxx:269 AliMUONPreClusterFinderV3.cxx:270 AliMUONPreClusterFinderV3.cxx:271 AliMUONPreClusterFinderV3.cxx:272 AliMUONPreClusterFinderV3.cxx:273 AliMUONPreClusterFinderV3.cxx:274 AliMUONPreClusterFinderV3.cxx:275 AliMUONPreClusterFinderV3.cxx:276 AliMUONPreClusterFinderV3.cxx:277 AliMUONPreClusterFinderV3.cxx:278 AliMUONPreClusterFinderV3.cxx:279 AliMUONPreClusterFinderV3.cxx:280 AliMUONPreClusterFinderV3.cxx:281 AliMUONPreClusterFinderV3.cxx:282 AliMUONPreClusterFinderV3.cxx:283 AliMUONPreClusterFinderV3.cxx:284 AliMUONPreClusterFinderV3.cxx:285 AliMUONPreClusterFinderV3.cxx:286 AliMUONPreClusterFinderV3.cxx:287 AliMUONPreClusterFinderV3.cxx:288 AliMUONPreClusterFinderV3.cxx:289 AliMUONPreClusterFinderV3.cxx:290 AliMUONPreClusterFinderV3.cxx:291 AliMUONPreClusterFinderV3.cxx:292 AliMUONPreClusterFinderV3.cxx:293 AliMUONPreClusterFinderV3.cxx:294