| 270 |
*/ |
*/ |
| 271 |
cTrkLevel1* TrkCluster::GetLevel1Struct(){ |
cTrkLevel1* TrkCluster::GetLevel1Struct(){ |
| 272 |
|
|
| 273 |
cTrkLevel1* l1 = new cTrkLevel1; |
// cTrkLevel1* l1 = new cTrkLevel1; |
| 274 |
|
|
| 275 |
l1->nclstr1 = 1; |
cTrkLevel1* l1 = &level1event_ ; |
|
l1->view[0] = view; |
|
|
l1->ladder[0] = GetLadder(); |
|
|
l1->maxs[0] = maxs; |
|
|
l1->mult[0] = GetMultiplicity(); |
|
|
l1->dedx[0] = GetSignal(); |
|
|
l1->indstart[0] = 1; |
|
|
l1->indmax[0] = indmax+1; |
|
|
l1->totCLlength = CLlength; |
|
|
for(Int_t i=0; i<CLlength; i++){ |
|
|
l1->clsignal[i] = clsignal[i]; |
|
|
l1->clsigma[i] = clsigma[i]; |
|
|
l1->cladc[i] = cladc[i]; |
|
|
l1->clbad[i] = clbad[i]; |
|
|
}; |
|
| 276 |
|
|
| 277 |
return l1; |
l1->nclstr1 = 1; |
| 278 |
|
l1->view[0] = view; |
| 279 |
|
l1->ladder[0] = GetLadder(); |
| 280 |
|
l1->maxs[0] = maxs; |
| 281 |
|
l1->mult[0] = GetMultiplicity(); |
| 282 |
|
l1->dedx[0] = GetSignal(); |
| 283 |
|
l1->indstart[0] = 1; |
| 284 |
|
l1->indmax[0] = indmax+1; |
| 285 |
|
l1->totCLlength = CLlength; |
| 286 |
|
for(Int_t i=0; i<CLlength; i++){ |
| 287 |
|
l1->clsignal[i] = clsignal[i]; |
| 288 |
|
l1->clsigma[i] = clsigma[i]; |
| 289 |
|
l1->cladc[i] = cladc[i]; |
| 290 |
|
l1->clbad[i] = clbad[i]; |
| 291 |
|
}; |
| 292 |
|
|
| 293 |
|
return l1; |
| 294 |
}; |
}; |
| 295 |
//-------------------------------------- |
//-------------------------------------- |
| 296 |
// |
// |
| 304 |
*/ |
*/ |
| 305 |
Float_t TrkCluster::GetCOG(Int_t ncog){ |
Float_t TrkCluster::GetCOG(Int_t ncog){ |
| 306 |
|
|
| 307 |
int ic = 1; |
int ic = 1; |
| 308 |
level1event_ = *GetLevel1Struct(); |
GetLevel1Struct(); |
| 309 |
return cog_(&ncog,&ic); |
return cog_(&ncog,&ic); |
| 310 |
|
|
| 311 |
|
}; |
| 312 |
|
/** |
| 313 |
|
* Evaluates the Center-Of-Gravity (COG) of the cluster, in strips, relative to the strip with the maximum signal (TrkCluster::maxs), |
| 314 |
|
* choosing the number of strips according to the angle, as implemented for the eta-algorythm . |
| 315 |
|
* @param angle Projected angle in degree. |
| 316 |
|
*/ |
| 317 |
|
Float_t TrkCluster::GetCOG(Float_t angle){ |
| 318 |
|
|
| 319 |
|
Int_t neta = 0; |
| 320 |
|
|
| 321 |
|
// Float_t eta = GetETA(0,angle); |
| 322 |
|
// for(neta=2; neta<10; neta++) if( eta == GetETA(neta,angle) ) break; |
| 323 |
|
// if(eta != GetETA(neta,angle) )cout << "Attenzione!! pasticcio "<<endl; |
| 324 |
|
|
| 325 |
|
if( view%2 ){ //Y |
| 326 |
|
neta=2; |
| 327 |
|
}else{ //X |
| 328 |
|
if( fabs(angle) <= 10. ){ |
| 329 |
|
neta = 2; |
| 330 |
|
}else if( fabs(angle) > 10. && fabs(angle) <= 15. ){ |
| 331 |
|
neta = 3; |
| 332 |
|
}else{ |
| 333 |
|
neta = 4; |
| 334 |
|
}; |
| 335 |
|
}; |
| 336 |
|
|
| 337 |
|
return GetCOG(neta); |
| 338 |
|
|
| 339 |
}; |
}; |
| 340 |
//-------------------------------------- |
//-------------------------------------- |
| 349 |
*/ |
*/ |
| 350 |
Float_t TrkCluster::GetETA(Int_t neta, float angle){ |
Float_t TrkCluster::GetETA(Int_t neta, float angle){ |
| 351 |
|
|
| 352 |
|
// cout << "GetETA(neta,angle) "<< neta << " "<< angle; |
| 353 |
// LoadPfaParam(); |
// LoadPfaParam(); |
| 354 |
int ic = 1; |
|
| 355 |
level1event_ = *GetLevel1Struct(); |
float ax = angle; |
| 356 |
if(neta == 0) return pfaeta_(&ic,&angle); |
int ic = 1; |
| 357 |
else if(neta == 2) return pfaeta2_(&ic,&angle); |
GetLevel1Struct(); |
| 358 |
else if(neta == 3) return pfaeta3_(&ic,&angle); |
if(neta == 0) return pfaeta_(&ic,&ax); |
| 359 |
else if(neta == 4) return pfaeta4_(&ic,&angle); |
else if(neta == 2) return pfaeta2_(&ic,&ax); |
| 360 |
else cout << "ETA"<<neta<<" not implemented\n"; |
else if(neta == 3) return pfaeta3_(&ic,&ax); |
| 361 |
return 0; |
else if(neta == 4) return pfaeta4_(&ic,&ax); |
| 362 |
|
else cout << "ETA"<<neta<<" not implemented\n"; |
| 363 |
|
return 0; |
| 364 |
|
|
| 365 |
}; |
}; |
| 366 |
|
|
| 367 |
//-------------------------------------- |
//-------------------------------------- |
| 369 |
// |
// |
| 370 |
//-------------------------------------- |
//-------------------------------------- |
| 371 |
TrkLevel1::TrkLevel1(){ |
TrkLevel1::TrkLevel1(){ |
| 372 |
|
|
| 373 |
|
Cluster = new TClonesArray("TrkCluster"); |
| 374 |
|
|
| 375 |
// good1 = -1; |
for(Int_t i=0; i<12 ; i++){ |
| 376 |
|
good[i] = -1; |
| 377 |
Cluster = new TClonesArray("TrkCluster"); |
for(Int_t j=0; j<24 ; j++){ |
| 378 |
|
cn[j][i]=0; |
| 379 |
for(Int_t i=0; i<12 ; i++){ |
// cnrms[j][i]=0; |
| 380 |
// crc[i] = -1; |
cnn[j][i]=0; |
|
good[i] = -1; |
|
|
for(Int_t j=0; j<24 ; j++){ |
|
|
cnev[j][i]=0; |
|
|
cnnev[j][i]=0; |
|
|
}; |
|
|
// fshower[i]=0; |
|
| 381 |
}; |
}; |
| 382 |
|
}; |
| 383 |
} |
} |
| 384 |
//-------------------------------------- |
//-------------------------------------- |
| 385 |
// |
// |
| 387 |
//-------------------------------------- |
//-------------------------------------- |
| 388 |
void TrkLevel1::Dump(){ |
void TrkLevel1::Dump(){ |
| 389 |
|
|
| 390 |
cout<<"DSP status: "; |
cout<<"DSP status: "; |
| 391 |
for(Int_t i=0; i<12 ; i++)cout<<good[i]<<" "; |
for(Int_t i=0; i<12 ; i++)cout<<good[i]<<" "; |
| 392 |
cout<<endl; |
cout<<endl; |
| 393 |
|
|
| 394 |
TClonesArray &t = *Cluster; |
TClonesArray &t = *Cluster; |
| 395 |
for(int i=0; i<this->nclstr(); i++) ((TrkCluster *)t[i])->Dump(); |
for(int i=0; i<this->nclstr(); i++) ((TrkCluster *)t[i])->Dump(); |
| 396 |
|
|
| 397 |
} |
} |
| 398 |
//-------------------------------------- |
//-------------------------------------- |
| 399 |
// |
// |
| 404 |
*/ |
*/ |
| 405 |
void TrkLevel1::SetFromLevel1Struct(cTrkLevel1 *l1){ |
void TrkLevel1::SetFromLevel1Struct(cTrkLevel1 *l1){ |
| 406 |
|
|
| 407 |
// *** CLUSTER *** |
// *** CLUSTER *** |
| 408 |
TrkCluster* t_cl = new TrkCluster(); |
TrkCluster* t_cl = new TrkCluster(); |
| 409 |
TClonesArray &t = *Cluster; |
TClonesArray &t = *Cluster; |
| 410 |
for(int i=0; i<l1->nclstr1; i++){ |
for(int i=0; i<l1->nclstr1; i++){ |
| 411 |
|
|
| 412 |
t_cl->view = l1->view[i]; |
t_cl->view = l1->view[i]; |
| 413 |
t_cl->maxs = l1->maxs[i]; |
t_cl->maxs = l1->maxs[i]; |
| 414 |
t_cl->indmax = l1->indmax[i] - l1->indstart[i]; |
t_cl->indmax = l1->indmax[i] - l1->indstart[i]; |
| 415 |
|
|
| 416 |
Int_t from = l1->indstart[i] -1; |
Int_t from = l1->indstart[i] -1; |
| 417 |
Int_t to = l1->totCLlength ; |
Int_t to = l1->totCLlength ; |
| 418 |
if(i != l1->nclstr1-1)to = l1->indstart[i+1] -1 ; |
if(i != l1->nclstr1-1)to = l1->indstart[i+1] -1 ; |
| 419 |
t_cl->CLlength = to - from ; |
t_cl->CLlength = to - from ; |
| 420 |
|
|
| 421 |
t_cl->clsignal = new Float_t[t_cl->CLlength]; |
t_cl->clsignal = new Float_t[t_cl->CLlength]; |
| 422 |
t_cl->clsigma = new Float_t[t_cl->CLlength]; |
t_cl->clsigma = new Float_t[t_cl->CLlength]; |
| 423 |
t_cl->cladc = new Int_t[t_cl->CLlength]; |
t_cl->cladc = new Int_t[t_cl->CLlength]; |
| 424 |
t_cl->clbad = new Bool_t[t_cl->CLlength]; |
t_cl->clbad = new Bool_t[t_cl->CLlength]; |
| 425 |
Int_t index = 0; |
Int_t index = 0; |
| 426 |
for(Int_t is = from; is < to; is++ ){ |
for(Int_t is = from; is < to; is++ ){ |
| 427 |
t_cl->clsignal[index] = (Float_t) l1->clsignal[is]; |
t_cl->clsignal[index] = (Float_t) l1->clsignal[is]; |
| 428 |
t_cl->clsigma[index] = (Float_t) l1->clsigma[is]; |
t_cl->clsigma[index] = (Float_t) l1->clsigma[is]; |
| 429 |
t_cl->cladc[index] = (Int_t) l1->cladc[is]; |
t_cl->cladc[index] = (Int_t) l1->cladc[is]; |
| 430 |
t_cl->clbad[index] = (Bool_t) l1->clbad[is]; |
t_cl->clbad[index] = (Bool_t) l1->clbad[is]; |
| 431 |
index++; |
index++; |
|
}; |
|
|
|
|
|
new(t[i]) TrkCluster(*t_cl); |
|
| 432 |
}; |
}; |
| 433 |
|
|
| 434 |
delete t_cl; |
new(t[i]) TrkCluster(*t_cl); |
| 435 |
|
}; |
| 436 |
// ****general variables**** |
|
| 437 |
|
delete t_cl; |
| 438 |
for(Int_t i=0; i<12 ; i++){ |
|
| 439 |
good[i] = -1; |
// ****general variables**** |
| 440 |
for(Int_t j=0; j<24 ; j++){ |
|
| 441 |
cnev[j][i] = l1->cnev[j][i]; |
for(Int_t i=0; i<12 ; i++){ |
| 442 |
cnnev[j][i] = l1->cnnev[j][i]; |
good[i] = l1->good[i]; |
| 443 |
}; |
for(Int_t j=0; j<24 ; j++){ |
| 444 |
|
cn[j][i] = l1->cnev[j][i]; |
| 445 |
|
// cnrms[j][i] = l1->cnrmsev[j][i]; |
| 446 |
|
cnn[j][i] = l1->cnnev[j][i]; |
| 447 |
}; |
}; |
| 448 |
|
}; |
| 449 |
|
|
| 450 |
} |
} |
| 451 |
/** |
/** |
| 452 |
* Fills a struct cTrkLevel1 with values from a TrkLevel1 object (to put data into a F77 common). |
* Fills a struct cTrkLevel1 with values from a TrkLevel1 object (to put data into a F77 common). |
| 454 |
|
|
| 455 |
cTrkLevel1* TrkLevel1::GetLevel1Struct() { |
cTrkLevel1* TrkLevel1::GetLevel1Struct() { |
| 456 |
|
|
| 457 |
cTrkLevel1 *l1=0; |
cTrkLevel1 *l1=0; |
| 458 |
// |
// |
| 459 |
for(Int_t i=0; i<12 ; i++){ |
for(Int_t i=0; i<12 ; i++){ |
| 460 |
l1->good[i] = good[i]; |
l1->good[i] = good[i]; |
| 461 |
for(Int_t j=0; j<24 ; j++){ |
for(Int_t j=0; j<24 ; j++){ |
| 462 |
l1->cnev[j][i] = cnev[j][i]; |
l1->cnev[j][i] = cn[j][i]; |
| 463 |
l1->cnnev[j][i] = cnnev[j][i]; |
// l1->cnrmsev[j][i] = cnrms[j][i]; |
| 464 |
}; |
l1->cnnev[j][i] = cnn[j][i]; |
| 465 |
}; |
}; |
| 466 |
|
}; |
| 467 |
|
|
| 468 |
// *** CLUSTERS *** |
// *** CLUSTERS *** |
| 469 |
l1->nclstr1 = Cluster->GetEntries(); |
l1->nclstr1 = Cluster->GetEntries(); |
| 470 |
for(Int_t i=0;i<l1->nclstr1;i++){ |
for(Int_t i=0;i<l1->nclstr1;i++){ |
| 471 |
|
|
| 472 |
l1->view[i] = ((TrkCluster *)Cluster->At(i))->view; |
l1->view[i] = ((TrkCluster *)Cluster->At(i))->view; |
| 473 |
l1->maxs[i] = ((TrkCluster *)Cluster->At(i))->maxs; |
l1->maxs[i] = ((TrkCluster *)Cluster->At(i))->maxs; |
|
// COMPLETARE // |
|
|
// COMPLETARE // |
|
|
// COMPLETARE // |
|
|
// COMPLETARE // |
|
|
// COMPLETARE // |
|
|
// COMPLETARE // |
|
|
|
|
|
} |
|
| 474 |
// COMPLETARE // |
// COMPLETARE // |
| 475 |
// COMPLETARE // |
// COMPLETARE // |
| 476 |
// COMPLETARE // |
// COMPLETARE // |
| 477 |
// COMPLETARE // |
// COMPLETARE // |
| 478 |
// COMPLETARE // |
// COMPLETARE // |
| 479 |
// COMPLETARE // |
// COMPLETARE // |
| 480 |
return l1; |
|
| 481 |
|
} |
| 482 |
|
// COMPLETARE // |
| 483 |
|
// COMPLETARE // |
| 484 |
|
// COMPLETARE // |
| 485 |
|
// COMPLETARE // |
| 486 |
|
// COMPLETARE // |
| 487 |
|
// COMPLETARE // |
| 488 |
|
return l1; |
| 489 |
} |
} |
| 490 |
//-------------------------------------- |
//-------------------------------------- |
| 491 |
// |
// |
| 492 |
// |
// |
| 493 |
//-------------------------------------- |
//-------------------------------------- |
| 494 |
void TrkLevel1::Clear(){ |
void TrkLevel1::Clear(){ |
| 495 |
|
|
| 496 |
for(Int_t i=0; i<12 ; i++){ |
for(Int_t i=0; i<12 ; i++){ |
| 497 |
good[i] = -1; |
good[i] = -1; |
| 498 |
for(Int_t j=0; j<24 ; j++){ |
for(Int_t j=0; j<24 ; j++){ |
| 499 |
cnev[j][i] = 0; |
cn[j][i] = 0; |
| 500 |
cnnev[j][i] = 0; |
// cnrms[j][i] = 0; |
| 501 |
}; |
cnn[j][i] = 0; |
| 502 |
}; |
}; |
| 503 |
// |
}; |
| 504 |
Cluster->Clear(); |
// |
| 505 |
|
Cluster->Clear(); |
| 506 |
|
|
| 507 |
} |
} |
| 508 |
//-------------------------------------- |
//-------------------------------------- |
| 509 |
// |
// |
| 511 |
//-------------------------------------- |
//-------------------------------------- |
| 512 |
void TrkLevel1::Delete(){ |
void TrkLevel1::Delete(){ |
| 513 |
|
|
| 514 |
for(Int_t i=0; i<12 ; i++){ |
for(Int_t i=0; i<12 ; i++){ |
| 515 |
good[i] = -1; |
good[i] = -1; |
| 516 |
for(Int_t j=0; j<24 ; j++){ |
for(Int_t j=0; j<24 ; j++){ |
| 517 |
cnev[j][i] = 0; |
cn[j][i] = 0; |
| 518 |
cnnev[j][i] = 0; |
// cnrms[j][i] = 0; |
| 519 |
}; |
cnn[j][i] = 0; |
| 520 |
}; |
}; |
| 521 |
// |
}; |
| 522 |
Cluster->Delete(); |
// |
| 523 |
|
Cluster->Delete(); |
| 524 |
|
|
| 525 |
} |
} |
| 526 |
|
|
| 527 |
//-------------------------------------- |
//-------------------------------------- |