//_________________________________________________________________________
// C++ version of UA2 and/or Lund jet finding algorithm
-// UA1 jet algorithm from LUND JETSET (LUCELL)
-//
+// UA1 jet algorithm from LUND JETSET (LUCELL)
+// Find jets at the level of no detector and Digits.
+// Needs modifications.
//*-- Author : D.Peressounko after UA1 coll. etc
//////////////////////////////////////////////////////////////////////////////
+/* $Id$ */
+
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.8 2005/05/28 14:19:04 schutz
+ * Compilation warnings fixed by T.P.
+ *
+ */
+
// --- ROOT system ---
#include "TClonesArray.h"
// #include "TIter.h"
// --- Standard library ---
// --- AliRoot header files ---
+#include "AliLog.h"
#include "AliPHOSJet.h"
+#include "AliPHOSGeometry.h"
#include "AliPHOSDigit.h"
#include "AliPHOSGetter.h"
#include "AliPHOSJetFinder.h"
//____________________________________________________________________________
- AliPHOSJetFinder::AliPHOSJetFinder():TNamed("AliPHOSJetFinder","")
+AliPHOSJetFinder::AliPHOSJetFinder():
+ TNamed("AliPHOSJetFinder",""),
+ fNJets(0),
+ fStatusCode(-999),
+ fMode(0),
+ fConeRad(1.),
+ fMaxConeMove(0.15),
+ fMinConeMove(0.05),
+ fEtSeed(4.),
+ fEtMin(5.),
+ fPrecBg(0.00035),
+ fSimGain(0.),
+ fSimPedestal(0.),
+ fParticles(0),
+ fJets(0)
{
- fNJets = 0 ;
- fMode = 0 ; //No iterations
- fStatusCode = -999 ; //no selection
-
- fConeRad = 1.; //Radius of jet value?????????
- fMaxConeMove = 0.15 ; //value???????
- fMinConeMove = 0.05 ; //value???????
- fEtSeed = 4. ; //Energy of seed particle value??????????
- fEtMin = 5.; //minimal energy of jet value??????????
- fPrecBg = 0.00035 ; //value????????
- fSimGain = 0.;
- fSimPedestal = 0.;
+ //Initialize jet parameters
+}
- fParticles = 0;
- fJets = 0 ;
-
+//____________________________________________________________________________
+AliPHOSJetFinder::AliPHOSJetFinder(const AliPHOSJetFinder & jet) :
+ TNamed(jet),
+ fNJets(0),
+ fStatusCode(-999),
+ fMode(0),
+ fConeRad(1.),
+ fMaxConeMove(0.15),
+ fMinConeMove(0.05),
+ fEtSeed(4.),
+ fEtMin(5.),
+ fPrecBg(0.00035),
+ fSimGain(0.),
+ fSimPedestal(0.),
+ fParticles(0),
+ fJets(0)
+{
+ // copy ctor: no implementation yet
+ Fatal("cpy ctor", "not implemented");
}
//____________________________________________________________________________
AliPHOSJetFinder::~AliPHOSJetFinder()
{
+ //dtor
if(fParticles){
delete fParticles ;
fParticles = 0 ;
//____________________________________________________________________________
void AliPHOSJetFinder::FindJetsFromParticles(const TClonesArray * plist,TObjArray * jetslist)
{
-
+ //Find jets in the case without detector.
TIter next(plist) ;
TIter nextJet(jetslist) ;
}
//____________________________________________________________________________
void AliPHOSJetFinder::FindJetsFromDigits(const TClonesArray * digits, TObjArray * jets){
-
+ //Find jets in the case witht detector at the level of digits.
if(digits->GetEntries()==0){
- Error("JetsFromDigits","No entries in digits list \n") ;
+ AliError(Form("No entries in digits list \n")) ;
return ;
}
copyDigits->Compress() ;
Double_t totalEnergy = 0 ;
- Float_t energy[copyDigits->GetEntries()] ;
+ Float_t * energy = new Float_t[copyDigits->GetEntries()] ;
//calculate average energy of digits
//fill array of energies
for(iDigit=0;iDigit<copyDigits->GetEntries();iDigit++){
}
//Sort digits in decreasing energy.
- Int_t index[copyDigits->GetEntries()] ;
+ Int_t * index = new Int_t[copyDigits->GetEntries()] ;
TMath::Sort(copyDigits->GetEntries(),energy,index) ;
Double_t eAverage = totalEnergy/copyDigits->GetEntries() ;
if(iDigit!= ind){ //first digit already in jet
digit = static_cast<AliPHOSDigit *>(copyDigits->At(iDigit));
CalculateEEtaPhi(digit,e,eta,phi) ;
- if(jet->IsInCone(e,eta,phi) && //is cell in cone
+ if(jet->IsInCone(eta,phi) && //is cell in cone
jet->AcceptConeDeviation(e,eta,phi)){//if cone does not move too much
jet->AddDigit(e,eta,phi,-1) ; //accept new direction
}
//note, that digits might be returned as anused later
for(Int_t icell = 0 ; icell < copyDigits->GetEntries() ; icell++){
digit = static_cast<AliPHOSDigit *>(copyDigits->At(icell));
- if(jet->IsInCone(e,eta,phi)){ //is cell in cone
+ if(jet->IsInCone(eta,phi)){ //is cell in cone
CalculateEEtaPhi(digit,e,eta,phi) ;
jet->AddDigit(e,eta,phi,digit->GetIndexInList()) ;
}
break ;
}
}
-
+ delete [] energy;
+ delete [] index;
copyDigits->Delete() ;
}
Double_t AliPHOSJetFinder::Calibrate(const AliPHOSDigit * digit){
// if(fPedestals || fGains ){ //use calibration data
// if(!fPedestals || !fGains ){
-// Error("Calibrate","Either Pedestals of Gains not set!") ;
+// AliError(Form("Either Pedestals of Gains not set!")) ;
// return 0 ;
// }
// Float_t en=(digit->GetAmp() - fPedestals->Data(digit->GetId)()))*fGains->Data(digit->GetId()) ;
// }
// else{ //simulation
if(fSimGain==0){ //read simulation parameters
- AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ;
+ AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
if(!gime){
- Error("Calibrate","Can not read Calibration parameters") ;
+ AliError(Form("Can not read Calibration parameters")) ;
return 0 ;
}
const TTask * task = gime->Digitizer() ;
}
//____________________________________________________________________________
void AliPHOSJetFinder::CalculateEEtaPhi(const AliPHOSDigit * d,Double_t &e, Double_t &eta, Double_t &phi){
+ //Calculate direction of the jet
e=Calibrate(d) ;
AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance("GPS2","") ;
TVector3 pos ;
phi = pos.Phi() ;
}
//____________________________________________________________________________
-void AliPHOSJetFinder::Print(Option_t * option){
+void AliPHOSJetFinder::Print(const Option_t *) const {
+ //Print parameters of the found jet
printf("\n --------------- AliPHOSJetFinder --------------- \n") ;
printf(" Jets found .........%d \n",fNJets) ;
printf(" Seed energy cut ....%f \n",fEtSeed) ;