]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALJetFinderAlgoOmni.cxx
Pyhtia comparison extended
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinderAlgoOmni.cxx
index 5e5c21e847cf13063d1831d4fb6147c64e0501d3..4f40e9d7bfd7c65420e0fb8fc1ec38ed74175633 100644 (file)
 /*
  
 $Log$
+Revision 1.11  2004/03/09 17:06:38  mhorner
+Made more robust
+
+Revision 1.10  2004/03/06 01:56:09  mhorner
+Pythai comp code
+
+Revision 1.9  2004/02/23 20:37:32  mhorner
+changed geometry call
+
+Revision 1.8  2004/01/29 23:28:44  mhorner
+Jet Finder - hard coded geom parameters removed
+
+Revision 1.7  2004/01/21 22:27:47  mhorner
+Cleaning up coding conventions
+
+Revision 1.6  2003/10/28 13:54:30  schutz
+Compilation warnings fixed
+
 Revision 1.5  2003/09/23 13:31:41  mhorner
 Changed coordinate system
 
@@ -42,6 +60,7 @@ Changed hadron correction and added saving EMCAL and track contributions
 #include "AliEMCALJetFinderAlgo.h"
 #include "AliEMCALJetFinderAlgoOmni.h"
 #include "AliEMCALJetFinderAlgoUA1Unit.h"
+#include "AliEMCALGetter.h"
 #include "AliEMCALGeometry.h"
 #include "AliEMCAL.h"
 #include "AliEMCALDigit.h"
@@ -58,8 +77,11 @@ ClassImp(AliEMCALJetFinderAlgoOmni)
   //Default constructor
 if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
 
+// AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+//  AliEMCALGeometry * geom = gime->EMCALGeometry();
+  AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance("EMCAL_55_25","EMCAL");
   fNumIter           = 0;
-  fNumUnits          = 13824;     //Number of towers in EMCAL
+  fNumUnits          = geom->GetNTowers();     //Number of towers in EMCAL
   fESeed             = 5.0;       //Default value
   fConeRad           = 0.3;       //Default value
   fJetEMin           = 10.0;      //Default value
@@ -147,13 +169,17 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
 
  void AliEMCALJetFinderAlgoOmni::FillUnitArray(AliEMCALJetFinderAlgoUA1FillUnitFlagType_t flag)
    {
+          // Fill the unit array 
      if (fDebug>1) Info("FillUnitArray","Beginning FillUnitArray");
          //    AliEMCAL* pEMCAL = (AliEMCAL*) gAlice->GetModule("EMCAL");
          //   if (pEMCAL){ 
          //         AliEMCALGeometry* geom =  AliEMCALGeometry::GetInstance(pEMCAL->GetTitle(), "");
          //     }else
          //    {
-     AliEMCALGeometry* geom =  AliEMCALGeometry::GetInstance("EMCAL_5655_21", "");
+
+     AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+     AliEMCALGeometry * geom = gime->EMCALGeometry();
+
         //    }
          
      AliEMCALJetFinderAlgoUA1FillUnitFlagType_t option = flag;
@@ -167,7 +193,8 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
         numDigits = fInputPointer->GetNDigits();
         TParticle         *myPart;
         AliEMCALDigit     *myDigit;
-
+     if (!fPythiaComparison)
+     {
         //Fill units with Track info if appropriate
         if(option==kFillTracksOnly || option ==kFillAll) 
           {          
@@ -285,6 +312,47 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
             //      if(i>13000) cout<<"!!!!!!!!!!!!!!!!!For unit0, eta="<<eta<<" and phi="<<phi*TMath::Pi()/180.0<<" and ID="<<fUnit[i].GetUnitID()<<endl;
             //  if(fUnit[i].GetUnitEnergy()>0) cout<<"Unit ID "<<fUnit[i].GetUnitID() <<"with eta="<<eta<<" and phi="<<phi*TMath::Pi()/180.0<<" has energy="<<fUnit[i].GetUnitEnergy()<<endl;
           }//end loop over all units in array (same as all towers in EMCAL)
+
+     }
+     if (fPythiaComparison)
+     {
+            for(Int_t j=0; j<numTracks; j++)                            
+            {
+                    myPart = fInputPointer->GetTrack(j);
+                    fUnit[j].SetUnitID(j);
+                    fUnit[j].SetUnitFlag(kOutJet);
+                    fUnit[j].SetUnitEta(myPart->Eta());
+                    fUnit[j].SetUnitPhi(myPart->Phi());
+                    if (myPart->Energy()*TMath::Sin(myPart->Theta()) > fPtCut)
+                    {
+                            fUnit[j].SetUnitEnergy(myPart->Energy()*TMath::Sin(myPart->Theta()));
+                    }else
+                    {
+                            fUnit[j].SetUnitEnergy(0.00);
+                    }
+                    fUnitNoCuts[j].SetUnitID(j);
+                    fUnitNoCuts[j].SetUnitFlag(kOutJet);
+                    fUnitNoCuts[j].SetUnitEta(myPart->Eta());
+                    fUnitNoCuts[j].SetUnitPhi(myPart->Phi());
+                    fUnitNoCuts[j].SetUnitEnergy(myPart->Energy()*TMath::Sin(myPart->Theta()));
+            }
+            for(Int_t k=numTracks; k < fNumUnits; k++)
+            {
+                    fUnit[k].SetUnitID(k);
+                    fUnit[k].SetUnitFlag(kBelowMinEt);
+                    fUnit[k].SetUnitEta(0.0);
+                    fUnit[k].SetUnitPhi(0.0);
+                    fUnit[k].SetUnitEnergy(0.0);                    
+                    fUnitNoCuts[k].SetUnitID(k);
+                    fUnitNoCuts[k].SetUnitFlag(kBelowMinEt);
+                    fUnitNoCuts[k].SetUnitEta(0.0);
+                    fUnitNoCuts[k].SetUnitPhi(0.0);
+                    fUnitNoCuts[k].SetUnitEnergy(0.0);                   
+            }
+     }
+
+
+
    }
 
 
@@ -439,8 +507,11 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
      fJetEtaSum += fEnergy * fDEta;
      fJetPhiSum += fEnergy * fDPhi;
      fJetESum += fEnergy;
-     fJetEta = fEtaInit + (fJetEtaSum / fJetESum);
-     fJetPhi = fPhiInit + (fJetPhiSum / fJetESum);
+     if (fJetESum >1.0e-7)
+     {
+            fJetEta = fEtaInit + (fJetEtaSum / fJetESum);
+            fJetPhi = fPhiInit + (fJetPhiSum / fJetESum);
+     }
    }
 
 
@@ -454,7 +525,14 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
         //Loop over all unit objects in the array and find if within cone radius
         Float_t dEta = fUnit[i].GetUnitEta() - fJetEta;
         Float_t dPhi = fUnit[i].GetUnitPhi() - fJetPhi;
-        Float_t rad = TMath::Sqrt( (dEta*dEta) + (dPhi*dPhi) );
+        Float_t rad;
+        if ((dEta*dEta) + (dPhi*dPhi)>1.e-7)
+        {
+                rad = TMath::Sqrt( (dEta*dEta) + (dPhi*dPhi) );
+        }else
+        {
+                rad=0.0;
+        }
 
         if(fUnit[i].GetUnitFlag()==kOutJet && rad<= fConeRad)
           {
@@ -473,7 +551,8 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
    {
      //Stores the resulting jet information in appropriate storage structure (TO BE DECIDED!!!!)
      if (fDebug>1) Info("StoreJetInfo","Storing Jet Information");
-     AliEMCALGeometry* geom =  AliEMCALGeometry::GetInstance("EMCAL_5655_21", "");
+     AliEMCALGetter * gime = AliEMCALGetter::Instance() ;
+     AliEMCALGeometry * geom = gime->EMCALGeometry();
      //Store:
      //fJetESum is the final jet energy (background has been subtracted)
      //fJetEta is the final jet Eta
@@ -524,7 +603,15 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
          Float_t phi = myP->Phi(); 
         Float_t deta = fJetEta-eta;
         Float_t dphi = fJetPhi -phi;
-        Float_t rad = TMath::Sqrt( (deta*deta) + (dphi*dphi));
+        Float_t rad ;
+        if ((deta*deta) + (dphi*dphi)>1.e-7)
+        {
+                rad = TMath::Sqrt( (deta*deta) + (dphi*dphi) );
+        }else
+        {
+                rad=0.0;
+        }
+
         if(rad<=fConeRad)
           {
             pTArray[index] = myP->Pt();
@@ -553,11 +640,20 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
         //GET DIGIT ETA, PHI so that can check if inside R!
         Float_t eta = 0.0;
         Float_t phi = 0.0;
-        Int_t ID = myD->GetId();
-        geom->EtaPhiFromIndex(ID, eta, phi);
+        Int_t iID = myD->GetId();
+        geom->EtaPhiFromIndex(iID, eta, phi);
         Float_t deta = fJetEta-eta;
         Float_t dphi = fJetPhi -(TMath::Pi()/180.0)*phi;
-        Float_t rad = TMath::Sqrt( (deta*deta) + (dphi*dphi));
+        //Float_t rad = TMath::Sqrt( (deta*deta) + (dphi*dphi));
+        Float_t rad ;
+        if ((deta*deta) + (dphi*dphi)>1.e-7)
+        {
+                rad = TMath::Sqrt( (deta*deta) + (dphi*dphi) );
+        }else
+        {
+                rad=0.0;
+        }
+
         if(rad<=fConeRad)
           {
         Int_t amplitude = myD->GetAmp();     //Gets the integer valued amplitude of the digit
@@ -674,7 +770,13 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
                           {
                             fDEta = fUnit[count1].GetUnitEta() - fJetEta;
                             fDPhi = fUnit[count1].GetUnitPhi() - fJetPhi;
-                            fRad = TMath::Sqrt( (fDEta*fDEta) + (fDPhi*fDPhi) );
+                            if ( (fDEta*fDEta) + (fDPhi*fDPhi) >1.e-7)
+                            {
+                                    fRad = TMath::Sqrt( (fDEta*fDEta) + (fDPhi*fDPhi) );
+                            }else
+                            {
+                                    fRad=0.000;
+                            }
                             if(fRad <= fConeRad)
                               {
                                 FindJetEtaPhi(count1); 
@@ -684,14 +786,26 @@ if (fDebug>0) Info("AliEMCALJetFinderAlgoOmni","Beginning Default Constructor");
                             
                      //Find the distance cone centre moved from previous cone centre
                      if (fDebug>10) Info("FindJets","Checking if cone move small enough");
-                     fDistP = TMath::Sqrt( ((fJetEta-fEtaB)*(fJetEta-fEtaB)) + ((fJetPhi-fPhiB)*(fJetPhi-fPhiB)) );
+                     if (((fJetEta-fEtaB)*(fJetEta-fEtaB)) + ((fJetPhi-fPhiB)*(fJetPhi-fPhiB))  >1.e-7)
+                     {
+                             fDistP = TMath::Sqrt( ((fJetEta-fEtaB)*(fJetEta-fEtaB)) + ((fJetPhi-fPhiB)*(fJetPhi-fPhiB)) );
+                     }else
+                     {
+                             fDistP = 0.00;
+                     }
                      //     if(fDistP <= fMinMove) break;
                             
 
                      //Find the distance cone centre is from initiator cell
                      if (fDebug>10) Info("FindJets","Checking if cone move too large");
-                     fDistI = TMath::Sqrt( ((fJetEtaSum/fJetESum)*(fJetEtaSum/fJetESum)) + ((fJetPhiSum/fJetESum)*
+                     if ( ((fJetEtaSum)*(fJetEtaSum))+((fJetPhiSum)*(fJetPhiSum)) >1.e-7)
+                     {
+                             fDistI = TMath::Sqrt( ((fJetEtaSum/fJetESum)*(fJetEtaSum/fJetESum)) + ((fJetPhiSum/fJetESum)*
                                                                                                    (fJetPhiSum/fJetESum)));
+                     }else
+                     {
+                             fDistI = 0.00;
+                     }
 
                      if(fDistP>fMinMove && fDistI<fMaxMove)
                        {