Small changes
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinderAlgo.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16
17 /* $Id$ */
18
19 //_________________________________________________________________________
20 //  Base Class for JetFinder Algorithms     
21 //                  
22 //*-- Author: Mark Horner (LBL/UCT)
23
24
25
26
27 #include "AliEMCALJetFinderAlgo.h"
28 #include "AliRun.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliMagF.h"
31 ClassImp(AliEMCALJetFinderAlgo)
32
33 AliEMCALJetFinderAlgo::AliEMCALJetFinderAlgo()
34 {
35    fDebug =0;
36 }
37   AliEMCALJetFinderAlgo::~AliEMCALJetFinderAlgo()
38 {
39
40 }
41
42 void AliEMCALJetFinderAlgo::InitInput(AliEMCALJetFinderInput* input)
43 {       
44 if (fDebug>1) Info("InitInput","Beginning InitInput");          
45         fInputPointer = input; 
46         fOutputObject.Reset(kResetAll); 
47         // automatically copy parton and particle info to output object
48          
49         for (Int_t counter = 0 ; counter < fInputPointer->GetNPartons();counter++)
50         {
51                 fOutputObject.AddParton(fInputPointer->GetParton(counter));
52         }
53         for (Int_t counter = 0 ; counter < fInputPointer->GetNParticles();counter++)
54         {
55                 fOutputObject.AddParticle(fInputPointer->GetParticle(counter));
56         }
57 }
58
59 Float_t AliEMCALJetFinderAlgo::PropagatePhi(Float_t pt, Float_t charge, Bool_t& curls)
60 {
61         // Propagates phi angle to EMCAL radius
62         // //
63  Float_t b = 0.0, rEMCAL = -1.0;
64  if(rEMCAL<0) 
65  {      
66          b =  gAlice->Field()->SolenoidField();
67          rEMCAL = AliEMCALGeometry::GetInstance()->GetIPDistance();
68  }
69  Float_t dPhi = 0.;
70  Float_t rB = 3335.6 * pt / b;  // [cm]  (case of |charge|=1)
71  if (2.*rB < rEMCAL) 
72  {
73          curls = kTRUE;
74          return dPhi;
75  }
76  Float_t phi = TMath::ACos(1.-rEMCAL*rEMCAL/(2.*rB*rB));
77  dPhi = TMath::ATan2(1.-TMath::Cos(phi), TMath::Sin(phi));
78  dPhi = -TMath::Sign(dPhi, charge);
79  return dPhi;
80 }
81