#include <Riostream.h>
#include <TMath.h>
#include <TTree.h>
#include <TObjArray.h>
#include <TClonesArray.h>
#include <TFile.h>
#include <TNtuple.h>
#include <TParticle.h>
#include "AliLog.h"
#include "AliPMDcluster.h"
#include "AliPMDclupid.h"
#include "AliPMDDiscriminator.h"
ClassImp(AliPMDDiscriminator)
AliPMDDiscriminator::AliPMDDiscriminator() :
fDiscrim(0)
{
}
AliPMDDiscriminator::~AliPMDDiscriminator()
{
}
void AliPMDDiscriminator::Discrimination(TObjArray *pmdcontin, TObjArray *pmdcontout)
{
if(fDiscrim == 0)
{
EmpDiscrimination(pmdcontin, pmdcontout);
}
else if(fDiscrim == 1)
{
NNDiscrimination();
}
}
void AliPMDDiscriminator::EmpDiscrimination(TObjArray *pmdcontin, TObjArray *pmdcontout)
{
const Int_t kumperdet = 24;
static Int_t neibx[6]={1,0,-1,-1,0,1}, neiby[6]={0,1,1,0,-1,-1};
Int_t det = 0, smn = 0;
Int_t iprecount[24], icpvcount[24];
Float_t xpos = 0., ypos = 0.;
Float_t adc = 0., ncell = 0., rad = 0.;
Float_t clusdata[6] = {0.,0.,0.,0.,0.,0.};
for(Int_t i = 0; i < kumperdet; i++)
{
iprecount[i] = 0;
icpvcount[i] = 0;
}
AliPMDcluster *pmdcl = 0;
AliPMDclupid *pmdclout = 0;
Int_t nentries1 = pmdcontin->GetEntries();
AliDebug(1,Form("Number of total clusters from CPV PRE = %d",nentries1));
for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
{
pmdcl = (AliPMDcluster*)pmdcontin->UncheckedAt(ient1);
det = pmdcl->GetDetector();
smn = pmdcl->GetSMN();
if(det == 0) iprecount[smn]++;
if(det == 1) icpvcount[smn]++;
}
Int_t idet = 0, ismn = 0;
Float_t edepcpv[48][96];
Int_t statuscpv[48][96];
for(Int_t i = 0; i < kumperdet; i++)
{
for (Int_t ix = 0; ix < 48;ix++)
{
for (Int_t iy = 0; iy < 96;iy++)
{
edepcpv[ix][iy] = 0.;
statuscpv[ix][iy] = 0;
}
}
Int_t precounter = iprecount[i];
Int_t cpvcounter = icpvcount[i];
Float_t *xpadpre = new Float_t[precounter];
Float_t *ypadpre = new Float_t[precounter];
Float_t *adcpre = new Float_t[precounter];
Float_t *ncellpre = new Float_t[precounter];
Float_t *radpre = new Float_t[precounter];
Int_t *sortcoord = new Int_t[precounter];
Int_t *clupidpre = new Int_t[precounter];
Float_t *xpadcpv = new Float_t[cpvcounter];
Float_t *ypadcpv = new Float_t[cpvcounter];
Float_t *adccpv = new Float_t[cpvcounter];
Float_t *ncellcpv = new Float_t[cpvcounter];
Float_t *radcpv = new Float_t[cpvcounter];
Int_t ii = 0;
Int_t ij = 0;
for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
{
pmdcl = (AliPMDcluster*)pmdcontin->UncheckedAt(ient1);
det = pmdcl->GetDetector();
smn = pmdcl->GetSMN();
xpos = pmdcl->GetClusX();
ypos = pmdcl->GetClusY();
adc = pmdcl->GetClusADC();
ncell = pmdcl->GetClusCells();
rad = pmdcl->GetClusRadius();
if(det == 0 && smn == i)
{
xpadpre[ii] = xpos;
ypadpre[ii] = ypos;
adcpre[ii] = adc;
ncellpre[ii] = ncell;
radpre[ii] = rad;
ii++;
}
if(det == 1 && smn == i)
{
Int_t ix = (Int_t) (xpos+0.5);
Int_t iy = (Int_t) (ypos+0.5);
if(ix > 47) ix = 47;
if(iy > 95) iy = 95;
edepcpv[ix][iy] = adc;
xpadcpv[ij] = xpos;
ypadcpv[ij] = ypos;
adccpv[ij] = adc;
ncellcpv[ij] = ncell;
radcpv[ij] = rad;
ij++;
}
}
Bool_t jsort = false;
TMath::Sort(precounter,adcpre,sortcoord,jsort);
Int_t jjsort = 0;
for(Int_t jj=0; jj<precounter; jj++)
{
jjsort = sortcoord[jj];
Int_t ix = (Int_t) (xpadpre[jjsort]+0.5);
Int_t iy = (Int_t) (ypadpre[jjsort]+0.5);
if(ix > 47) ix = 47;
if(iy > 95) iy = 95;
for(Int_t jk=0; jk<6; jk++)
{
Int_t jd1 = ix + neibx[jk];
Int_t jd2 = iy + neiby[jk];
if(jd1 <0 ) jd1 = 0;
if(jd1 >47) jd1 = 47;
if(jd2 <0 ) jd2 = 0;
if(jd2 >47) jd2 = 47;
if(edepcpv[jd1][jd2] > 0.0 && statuscpv[jd1][jd2] == 0)
{
statuscpv[jd1][jd2] = 1;
clupidpre[jjsort] = 1;
break;
}
}
idet = 0;
ismn = i;
clusdata[0] = xpadpre[jjsort];
clusdata[1] = ypadpre[jjsort];
clusdata[2] = adcpre[jjsort];
clusdata[3] = ncellpre[jjsort];
clusdata[4] = radpre[jjsort];
if (adcpre[jjsort] > 4500.)
{
clusdata[5] = 1.0;
}
else
{
clusdata[5] = 0.0;
}
pmdclout = new AliPMDclupid(idet,ismn,clusdata);
pmdcontout->Add(pmdclout);
}
for(Int_t jj=0; jj<cpvcounter; jj++)
{
idet = 1;
ismn = i;
clusdata[0] = xpadcpv[jj];
clusdata[1] = ypadcpv[jj];
clusdata[2] = adccpv[jj];
clusdata[3] = ncellcpv[jj];
clusdata[4] = radcpv[jj];
clusdata[5] = 0.;
pmdclout = new AliPMDclupid(idet,ismn,clusdata);
pmdcontout->Add(pmdclout);
}
delete [] xpadpre;
delete [] ypadpre;
delete [] adcpre;
delete [] ncellpre;
delete [] radpre;
delete [] clupidpre;
delete [] xpadcpv;
delete [] ypadcpv;
delete [] adccpv;
delete [] ncellcpv;
delete [] radcpv;
}
}
void AliPMDDiscriminator::NNDiscrimination()
{
}
void AliPMDDiscriminator::SetDiscrimination(Int_t idiscrim)
{
fDiscrim = idiscrim;
}
AliPMDDiscriminator.cxx:1 AliPMDDiscriminator.cxx:2 AliPMDDiscriminator.cxx:3 AliPMDDiscriminator.cxx:4 AliPMDDiscriminator.cxx:5 AliPMDDiscriminator.cxx:6 AliPMDDiscriminator.cxx:7 AliPMDDiscriminator.cxx:8 AliPMDDiscriminator.cxx:9 AliPMDDiscriminator.cxx:10 AliPMDDiscriminator.cxx:11 AliPMDDiscriminator.cxx:12 AliPMDDiscriminator.cxx:13 AliPMDDiscriminator.cxx:14 AliPMDDiscriminator.cxx:15 AliPMDDiscriminator.cxx:16 AliPMDDiscriminator.cxx:17 AliPMDDiscriminator.cxx:18 AliPMDDiscriminator.cxx:19 AliPMDDiscriminator.cxx:20 AliPMDDiscriminator.cxx:21 AliPMDDiscriminator.cxx:22 AliPMDDiscriminator.cxx:23 AliPMDDiscriminator.cxx:24 AliPMDDiscriminator.cxx:25 AliPMDDiscriminator.cxx:26 AliPMDDiscriminator.cxx:27 AliPMDDiscriminator.cxx:28 AliPMDDiscriminator.cxx:29 AliPMDDiscriminator.cxx:30 AliPMDDiscriminator.cxx:31 AliPMDDiscriminator.cxx:32 AliPMDDiscriminator.cxx:33 AliPMDDiscriminator.cxx:34 AliPMDDiscriminator.cxx:35 AliPMDDiscriminator.cxx:36 AliPMDDiscriminator.cxx:37 AliPMDDiscriminator.cxx:38 AliPMDDiscriminator.cxx:39 AliPMDDiscriminator.cxx:40 AliPMDDiscriminator.cxx:41 AliPMDDiscriminator.cxx:42 AliPMDDiscriminator.cxx:43 AliPMDDiscriminator.cxx:44 AliPMDDiscriminator.cxx:45 AliPMDDiscriminator.cxx:46 AliPMDDiscriminator.cxx:47 AliPMDDiscriminator.cxx:48 AliPMDDiscriminator.cxx:49 AliPMDDiscriminator.cxx:50 AliPMDDiscriminator.cxx:51 AliPMDDiscriminator.cxx:52 AliPMDDiscriminator.cxx:53 AliPMDDiscriminator.cxx:54 AliPMDDiscriminator.cxx:55 AliPMDDiscriminator.cxx:56 AliPMDDiscriminator.cxx:57 AliPMDDiscriminator.cxx:58 AliPMDDiscriminator.cxx:59 AliPMDDiscriminator.cxx:60 AliPMDDiscriminator.cxx:61 AliPMDDiscriminator.cxx:62 AliPMDDiscriminator.cxx:63 AliPMDDiscriminator.cxx:64 AliPMDDiscriminator.cxx:65 AliPMDDiscriminator.cxx:66 AliPMDDiscriminator.cxx:67 AliPMDDiscriminator.cxx:68 AliPMDDiscriminator.cxx:69 AliPMDDiscriminator.cxx:70 AliPMDDiscriminator.cxx:71 AliPMDDiscriminator.cxx:72 AliPMDDiscriminator.cxx:73 AliPMDDiscriminator.cxx:74 AliPMDDiscriminator.cxx:75 AliPMDDiscriminator.cxx:76 AliPMDDiscriminator.cxx:77 AliPMDDiscriminator.cxx:78 AliPMDDiscriminator.cxx:79 AliPMDDiscriminator.cxx:80 AliPMDDiscriminator.cxx:81 AliPMDDiscriminator.cxx:82 AliPMDDiscriminator.cxx:83 AliPMDDiscriminator.cxx:84 AliPMDDiscriminator.cxx:85 AliPMDDiscriminator.cxx:86 AliPMDDiscriminator.cxx:87 AliPMDDiscriminator.cxx:88 AliPMDDiscriminator.cxx:89 AliPMDDiscriminator.cxx:90 AliPMDDiscriminator.cxx:91 AliPMDDiscriminator.cxx:92 AliPMDDiscriminator.cxx:93 AliPMDDiscriminator.cxx:94 AliPMDDiscriminator.cxx:95 AliPMDDiscriminator.cxx:96 AliPMDDiscriminator.cxx:97 AliPMDDiscriminator.cxx:98 AliPMDDiscriminator.cxx:99 AliPMDDiscriminator.cxx:100 AliPMDDiscriminator.cxx:101 AliPMDDiscriminator.cxx:102 AliPMDDiscriminator.cxx:103 AliPMDDiscriminator.cxx:104 AliPMDDiscriminator.cxx:105 AliPMDDiscriminator.cxx:106 AliPMDDiscriminator.cxx:107 AliPMDDiscriminator.cxx:108 AliPMDDiscriminator.cxx:109 AliPMDDiscriminator.cxx:110 AliPMDDiscriminator.cxx:111 AliPMDDiscriminator.cxx:112 AliPMDDiscriminator.cxx:113 AliPMDDiscriminator.cxx:114 AliPMDDiscriminator.cxx:115 AliPMDDiscriminator.cxx:116 AliPMDDiscriminator.cxx:117 AliPMDDiscriminator.cxx:118 AliPMDDiscriminator.cxx:119 AliPMDDiscriminator.cxx:120 AliPMDDiscriminator.cxx:121 AliPMDDiscriminator.cxx:122 AliPMDDiscriminator.cxx:123 AliPMDDiscriminator.cxx:124 AliPMDDiscriminator.cxx:125 AliPMDDiscriminator.cxx:126 AliPMDDiscriminator.cxx:127 AliPMDDiscriminator.cxx:128 AliPMDDiscriminator.cxx:129 AliPMDDiscriminator.cxx:130 AliPMDDiscriminator.cxx:131 AliPMDDiscriminator.cxx:132 AliPMDDiscriminator.cxx:133 AliPMDDiscriminator.cxx:134 AliPMDDiscriminator.cxx:135 AliPMDDiscriminator.cxx:136 AliPMDDiscriminator.cxx:137 AliPMDDiscriminator.cxx:138 AliPMDDiscriminator.cxx:139 AliPMDDiscriminator.cxx:140 AliPMDDiscriminator.cxx:141 AliPMDDiscriminator.cxx:142 AliPMDDiscriminator.cxx:143 AliPMDDiscriminator.cxx:144 AliPMDDiscriminator.cxx:145 AliPMDDiscriminator.cxx:146 AliPMDDiscriminator.cxx:147 AliPMDDiscriminator.cxx:148 AliPMDDiscriminator.cxx:149 AliPMDDiscriminator.cxx:150 AliPMDDiscriminator.cxx:151 AliPMDDiscriminator.cxx:152 AliPMDDiscriminator.cxx:153 AliPMDDiscriminator.cxx:154 AliPMDDiscriminator.cxx:155 AliPMDDiscriminator.cxx:156 AliPMDDiscriminator.cxx:157 AliPMDDiscriminator.cxx:158 AliPMDDiscriminator.cxx:159 AliPMDDiscriminator.cxx:160 AliPMDDiscriminator.cxx:161 AliPMDDiscriminator.cxx:162 AliPMDDiscriminator.cxx:163 AliPMDDiscriminator.cxx:164 AliPMDDiscriminator.cxx:165 AliPMDDiscriminator.cxx:166 AliPMDDiscriminator.cxx:167 AliPMDDiscriminator.cxx:168 AliPMDDiscriminator.cxx:169 AliPMDDiscriminator.cxx:170 AliPMDDiscriminator.cxx:171 AliPMDDiscriminator.cxx:172 AliPMDDiscriminator.cxx:173 AliPMDDiscriminator.cxx:174 AliPMDDiscriminator.cxx:175 AliPMDDiscriminator.cxx:176 AliPMDDiscriminator.cxx:177 AliPMDDiscriminator.cxx:178 AliPMDDiscriminator.cxx:179 AliPMDDiscriminator.cxx:180 AliPMDDiscriminator.cxx:181 AliPMDDiscriminator.cxx:182 AliPMDDiscriminator.cxx:183 AliPMDDiscriminator.cxx:184 AliPMDDiscriminator.cxx:185 AliPMDDiscriminator.cxx:186 AliPMDDiscriminator.cxx:187 AliPMDDiscriminator.cxx:188 AliPMDDiscriminator.cxx:189 AliPMDDiscriminator.cxx:190 AliPMDDiscriminator.cxx:191 AliPMDDiscriminator.cxx:192 AliPMDDiscriminator.cxx:193 AliPMDDiscriminator.cxx:194 AliPMDDiscriminator.cxx:195 AliPMDDiscriminator.cxx:196 AliPMDDiscriminator.cxx:197 AliPMDDiscriminator.cxx:198 AliPMDDiscriminator.cxx:199 AliPMDDiscriminator.cxx:200 AliPMDDiscriminator.cxx:201 AliPMDDiscriminator.cxx:202 AliPMDDiscriminator.cxx:203 AliPMDDiscriminator.cxx:204 AliPMDDiscriminator.cxx:205 AliPMDDiscriminator.cxx:206 AliPMDDiscriminator.cxx:207 AliPMDDiscriminator.cxx:208 AliPMDDiscriminator.cxx:209 AliPMDDiscriminator.cxx:210 AliPMDDiscriminator.cxx:211 AliPMDDiscriminator.cxx:212 AliPMDDiscriminator.cxx:213 AliPMDDiscriminator.cxx:214 AliPMDDiscriminator.cxx:215 AliPMDDiscriminator.cxx:216 AliPMDDiscriminator.cxx:217 AliPMDDiscriminator.cxx:218 AliPMDDiscriminator.cxx:219 AliPMDDiscriminator.cxx:220 AliPMDDiscriminator.cxx:221 AliPMDDiscriminator.cxx:222 AliPMDDiscriminator.cxx:223 AliPMDDiscriminator.cxx:224 AliPMDDiscriminator.cxx:225 AliPMDDiscriminator.cxx:226 AliPMDDiscriminator.cxx:227 AliPMDDiscriminator.cxx:228 AliPMDDiscriminator.cxx:229 AliPMDDiscriminator.cxx:230 AliPMDDiscriminator.cxx:231 AliPMDDiscriminator.cxx:232 AliPMDDiscriminator.cxx:233 AliPMDDiscriminator.cxx:234 AliPMDDiscriminator.cxx:235 AliPMDDiscriminator.cxx:236 AliPMDDiscriminator.cxx:237 AliPMDDiscriminator.cxx:238 AliPMDDiscriminator.cxx:239 AliPMDDiscriminator.cxx:240 AliPMDDiscriminator.cxx:241 AliPMDDiscriminator.cxx:242 AliPMDDiscriminator.cxx:243 AliPMDDiscriminator.cxx:244 AliPMDDiscriminator.cxx:245 AliPMDDiscriminator.cxx:246 AliPMDDiscriminator.cxx:247 AliPMDDiscriminator.cxx:248 AliPMDDiscriminator.cxx:249 AliPMDDiscriminator.cxx:250 AliPMDDiscriminator.cxx:251 AliPMDDiscriminator.cxx:252 AliPMDDiscriminator.cxx:253 AliPMDDiscriminator.cxx:254 AliPMDDiscriminator.cxx:255 AliPMDDiscriminator.cxx:256 AliPMDDiscriminator.cxx:257 AliPMDDiscriminator.cxx:258 AliPMDDiscriminator.cxx:259 AliPMDDiscriminator.cxx:260 AliPMDDiscriminator.cxx:261 AliPMDDiscriminator.cxx:262 AliPMDDiscriminator.cxx:263 AliPMDDiscriminator.cxx:264 AliPMDDiscriminator.cxx:265 AliPMDDiscriminator.cxx:266 AliPMDDiscriminator.cxx:267 AliPMDDiscriminator.cxx:268 AliPMDDiscriminator.cxx:269 AliPMDDiscriminator.cxx:270 AliPMDDiscriminator.cxx:271 AliPMDDiscriminator.cxx:272 AliPMDDiscriminator.cxx:273 AliPMDDiscriminator.cxx:274 AliPMDDiscriminator.cxx:275 AliPMDDiscriminator.cxx:276 AliPMDDiscriminator.cxx:277 AliPMDDiscriminator.cxx:278 AliPMDDiscriminator.cxx:279