ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//-------------------------------------------------------------------------
//     AOD class for jets
//     Author: Andreas Morsch, CERN
//-------------------------------------------------------------------------

#include <TLorentzVector.h>
#include "AliAODJet.h"

ClassImp(AliAODJet)


//______________________________________________________________________________
AliAODJet::AliAODJet() :
    AliVParticle(),
    fNeutralFraction(0),
    fPtLeadingConstituent(-1.),
    fTrigger(0),
    fMomentum(0),
    fVectorAreaCharged(0),
    fRefTracks(new TRefArray())
{
  // constructor
    fBackgEnergy[0]   = 0.;     
    fBackgEnergy[1]   = 0.;
    fEffectiveArea[0] = 0.;   
    fEffectiveArea[1] = 0.;   
    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;
    fPtSubtracted[0] =   fPtSubtracted[1] = 0;
}

AliAODJet::AliAODJet(Double_t px, Double_t py, Double_t pz, Double_t e):
    AliVParticle(),
    fNeutralFraction(0),
    fPtLeadingConstituent(-1.),
    fTrigger(0),
    fMomentum(0),
    fVectorAreaCharged(0),
    fRefTracks(new TRefArray())


{
  // constructor
    fBackgEnergy[0]   = 0.;     
    fBackgEnergy[1]   = 0.;
    fEffectiveArea[0] = 0.;   
    fEffectiveArea[1] = 0.;
    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;   
    fPtSubtracted[0] =   fPtSubtracted[1] = 0;
    fMomentum = new TLorentzVector(px, py, pz, e);
}

AliAODJet::AliAODJet(TLorentzVector & p):
    AliVParticle(),
    fNeutralFraction(0),
    fPtLeadingConstituent(-1.),
    fTrigger(0),
    fMomentum(0),
    fVectorAreaCharged(0),
    fRefTracks(new TRefArray())

{
  // constructor
    fBackgEnergy[0]   = 0.;     
    fBackgEnergy[1]   = 0.;
    fEffectiveArea[0] = 0.;   
    fEffectiveArea[1] = 0.;
    fEffectiveAreaError[0] = fEffectiveAreaError[1] = 0;    
    fPtSubtracted[0] =   fPtSubtracted[1] = 0;
    fMomentum = new TLorentzVector(p);
}


//______________________________________________________________________________
AliAODJet::~AliAODJet() 
{
  // destructor
    delete fMomentum;
    delete fVectorAreaCharged;
    delete fRefTracks;
}

//______________________________________________________________________________
AliAODJet::AliAODJet(const AliAODJet& jet) :
    AliVParticle(jet),
    fNeutralFraction(jet.fNeutralFraction),
    fPtLeadingConstituent(jet.fPtLeadingConstituent),
    fTrigger(jet.fTrigger),
    fMomentum(0),
    fVectorAreaCharged(0),
    fRefTracks(0)

{
  // Copy constructor
    fBackgEnergy[0]   = jet.fBackgEnergy[0];
    fBackgEnergy[1]   = jet.fBackgEnergy[1];
    fEffectiveArea[0] = jet.fEffectiveArea[0];
    fEffectiveArea[1] = jet.fEffectiveArea[1];
    fEffectiveAreaError[0] = jet.fEffectiveAreaError[0];
    fEffectiveAreaError[1] = jet.fEffectiveAreaError[1];
    fPtSubtracted[0] =   jet.fPtSubtracted[0];
    fPtSubtracted[1] =   jet.fPtSubtracted[1];
    if(jet.fMomentum)fMomentum  = new TLorentzVector(*jet.fMomentum);
    if(jet.fVectorAreaCharged)fVectorAreaCharged = new TLorentzVector(*jet.fVectorAreaCharged);
    fRefTracks = new TRefArray(*jet.fRefTracks);
}

//______________________________________________________________________________
AliAODJet& AliAODJet::operator=(const AliAODJet& jet)
{
  // Assignment operator
  if(this!=&jet) {

    fBackgEnergy[0]   = jet.fBackgEnergy[0];
    fBackgEnergy[1]   = jet.fBackgEnergy[1];
    fEffectiveArea[0] = jet.fEffectiveArea[0];
    fEffectiveArea[1] = jet.fEffectiveArea[1];
    fEffectiveAreaError[0] = jet.fEffectiveAreaError[0];
    fEffectiveAreaError[1] = jet.fEffectiveAreaError[1];
    fPtSubtracted[0] =   jet.fPtSubtracted[0];
    fPtSubtracted[1] =   jet.fPtSubtracted[1];
    fNeutralFraction = jet.fNeutralFraction;
    fPtLeadingConstituent = jet.fPtLeadingConstituent;
    fTrigger = jet.fTrigger;
    
    
    if(jet.fMomentum){
      if(fMomentum)*fMomentum  = *jet.fMomentum;
      else fMomentum  = new TLorentzVector(*jet.fMomentum);
    }

    if(jet.fVectorAreaCharged){
	if(fVectorAreaCharged)*fVectorAreaCharged = *jet.fVectorAreaCharged;
	else fVectorAreaCharged = new TLorentzVector(*jet.fVectorAreaCharged);
      }
    delete fRefTracks;
    fRefTracks = new TRefArray(*jet.fRefTracks);    


  }

  return *this;
}

void AliAODJet::Print(Option_t* option) const
{

 if (!option) {
  // Print information of all data members
  printf("Jet 4-vector:\n");
  printf("     E  = %13.3f\n", E() );
  printf("     Px = %13.3f\n", Px());
  printf("     Py = %13.3f\n", Py());
  printf("     Pz = %13.3f\n", Pz());
  printf("Background Energy:\n");
  printf("Charged:  %13.3f\n", ChargedBgEnergy());
  printf("Neutral:  %13.3f\n", NeutralBgEnergy());
  printf("Total:    %13.3f\n", TotalBgEnergy());
  printf("Effective Area: \n");
  printf("Charged:  %13.3f\n", EffectiveAreaCharged());
  printf("Neutral:  %13.3f\n", EffectiveAreaNeutral());
  printf("Leading constituent: %f\n",GetPtLeading());
 }
 else {
  printf("Jet %s, Eta: %13.3f, Phi: %13.3f, Pt: %13.3f\n",option,Eta(),Phi(),Pt());
 }

}

void  AliAODJet::SetPxPyPzE(Double_t px, Double_t py, Double_t pz, Double_t e){
  // 
  // Set the four Momentum from outside
  // MomentumVector()->SetPxPyPzE() cannot be used since pointer can be 0x0
  //

  if(!fMomentum){
    fMomentum = new TLorentzVector(px,py,pz,e);
  }
  else{
    fMomentum->SetPxPyPzE(px,py,pz,e);
  }
}

void  AliAODJet::SetPtEtaPhiM(Double_t pt, Double_t eta, Double_t phi, Double_t m){
  // 
  // Set the four Momentum from outside with pt eta phi and M
  // MomentumVector()->SetPtPhiEtaM() cannot be used since pointer can be 0x0
  //

  if(!fMomentum){
    fMomentum = new TLorentzVector();
  }
  fMomentum->SetPtEtaPhiM(pt,eta,phi,m);
}



Double_t AliAODJet::DeltaR(const AliVParticle* part) const {

  // Helper function to calculate the distance between two jets
  // or a jet and particle

  Double_t dPhi = Phi() - part->Phi(); 
  if(dPhi>TMath::Pi())dPhi = dPhi - 2.*TMath::Pi();
  if(dPhi<(-1.*TMath::Pi()))dPhi = dPhi + 2.*TMath::Pi();
  Double_t dEta = Eta() - part->Eta(); 
  Double_t dR = TMath::Sqrt(dPhi*dPhi+dEta*dEta);
  return dR;
}


void  AliAODJet::AddTrack(TObject *tr) {
    // Add a track to the list of referenced tracks
    if (fRefTracks->GetEntries() == 0) {
      fRefTracks->Delete();
      new(fRefTracks) TRefArray(TProcessID::GetProcessWithUID(tr));
    }
    
    fRefTracks->Add(tr);
}

 AliAODJet.cxx:1
 AliAODJet.cxx:2
 AliAODJet.cxx:3
 AliAODJet.cxx:4
 AliAODJet.cxx:5
 AliAODJet.cxx:6
 AliAODJet.cxx:7
 AliAODJet.cxx:8
 AliAODJet.cxx:9
 AliAODJet.cxx:10
 AliAODJet.cxx:11
 AliAODJet.cxx:12
 AliAODJet.cxx:13
 AliAODJet.cxx:14
 AliAODJet.cxx:15
 AliAODJet.cxx:16
 AliAODJet.cxx:17
 AliAODJet.cxx:18
 AliAODJet.cxx:19
 AliAODJet.cxx:20
 AliAODJet.cxx:21
 AliAODJet.cxx:22
 AliAODJet.cxx:23
 AliAODJet.cxx:24
 AliAODJet.cxx:25
 AliAODJet.cxx:26
 AliAODJet.cxx:27
 AliAODJet.cxx:28
 AliAODJet.cxx:29
 AliAODJet.cxx:30
 AliAODJet.cxx:31
 AliAODJet.cxx:32
 AliAODJet.cxx:33
 AliAODJet.cxx:34
 AliAODJet.cxx:35
 AliAODJet.cxx:36
 AliAODJet.cxx:37
 AliAODJet.cxx:38
 AliAODJet.cxx:39
 AliAODJet.cxx:40
 AliAODJet.cxx:41
 AliAODJet.cxx:42
 AliAODJet.cxx:43
 AliAODJet.cxx:44
 AliAODJet.cxx:45
 AliAODJet.cxx:46
 AliAODJet.cxx:47
 AliAODJet.cxx:48
 AliAODJet.cxx:49
 AliAODJet.cxx:50
 AliAODJet.cxx:51
 AliAODJet.cxx:52
 AliAODJet.cxx:53
 AliAODJet.cxx:54
 AliAODJet.cxx:55
 AliAODJet.cxx:56
 AliAODJet.cxx:57
 AliAODJet.cxx:58
 AliAODJet.cxx:59
 AliAODJet.cxx:60
 AliAODJet.cxx:61
 AliAODJet.cxx:62
 AliAODJet.cxx:63
 AliAODJet.cxx:64
 AliAODJet.cxx:65
 AliAODJet.cxx:66
 AliAODJet.cxx:67
 AliAODJet.cxx:68
 AliAODJet.cxx:69
 AliAODJet.cxx:70
 AliAODJet.cxx:71
 AliAODJet.cxx:72
 AliAODJet.cxx:73
 AliAODJet.cxx:74
 AliAODJet.cxx:75
 AliAODJet.cxx:76
 AliAODJet.cxx:77
 AliAODJet.cxx:78
 AliAODJet.cxx:79
 AliAODJet.cxx:80
 AliAODJet.cxx:81
 AliAODJet.cxx:82
 AliAODJet.cxx:83
 AliAODJet.cxx:84
 AliAODJet.cxx:85
 AliAODJet.cxx:86
 AliAODJet.cxx:87
 AliAODJet.cxx:88
 AliAODJet.cxx:89
 AliAODJet.cxx:90
 AliAODJet.cxx:91
 AliAODJet.cxx:92
 AliAODJet.cxx:93
 AliAODJet.cxx:94
 AliAODJet.cxx:95
 AliAODJet.cxx:96
 AliAODJet.cxx:97
 AliAODJet.cxx:98
 AliAODJet.cxx:99
 AliAODJet.cxx:100
 AliAODJet.cxx:101
 AliAODJet.cxx:102
 AliAODJet.cxx:103
 AliAODJet.cxx:104
 AliAODJet.cxx:105
 AliAODJet.cxx:106
 AliAODJet.cxx:107
 AliAODJet.cxx:108
 AliAODJet.cxx:109
 AliAODJet.cxx:110
 AliAODJet.cxx:111
 AliAODJet.cxx:112
 AliAODJet.cxx:113
 AliAODJet.cxx:114
 AliAODJet.cxx:115
 AliAODJet.cxx:116
 AliAODJet.cxx:117
 AliAODJet.cxx:118
 AliAODJet.cxx:119
 AliAODJet.cxx:120
 AliAODJet.cxx:121
 AliAODJet.cxx:122
 AliAODJet.cxx:123
 AliAODJet.cxx:124
 AliAODJet.cxx:125
 AliAODJet.cxx:126
 AliAODJet.cxx:127
 AliAODJet.cxx:128
 AliAODJet.cxx:129
 AliAODJet.cxx:130
 AliAODJet.cxx:131
 AliAODJet.cxx:132
 AliAODJet.cxx:133
 AliAODJet.cxx:134
 AliAODJet.cxx:135
 AliAODJet.cxx:136
 AliAODJet.cxx:137
 AliAODJet.cxx:138
 AliAODJet.cxx:139
 AliAODJet.cxx:140
 AliAODJet.cxx:141
 AliAODJet.cxx:142
 AliAODJet.cxx:143
 AliAODJet.cxx:144
 AliAODJet.cxx:145
 AliAODJet.cxx:146
 AliAODJet.cxx:147
 AliAODJet.cxx:148
 AliAODJet.cxx:149
 AliAODJet.cxx:150
 AliAODJet.cxx:151
 AliAODJet.cxx:152
 AliAODJet.cxx:153
 AliAODJet.cxx:154
 AliAODJet.cxx:155
 AliAODJet.cxx:156
 AliAODJet.cxx:157
 AliAODJet.cxx:158
 AliAODJet.cxx:159
 AliAODJet.cxx:160
 AliAODJet.cxx:161
 AliAODJet.cxx:162
 AliAODJet.cxx:163
 AliAODJet.cxx:164
 AliAODJet.cxx:165
 AliAODJet.cxx:166
 AliAODJet.cxx:167
 AliAODJet.cxx:168
 AliAODJet.cxx:169
 AliAODJet.cxx:170
 AliAODJet.cxx:171
 AliAODJet.cxx:172
 AliAODJet.cxx:173
 AliAODJet.cxx:174
 AliAODJet.cxx:175
 AliAODJet.cxx:176
 AliAODJet.cxx:177
 AliAODJet.cxx:178
 AliAODJet.cxx:179
 AliAODJet.cxx:180
 AliAODJet.cxx:181
 AliAODJet.cxx:182
 AliAODJet.cxx:183
 AliAODJet.cxx:184
 AliAODJet.cxx:185
 AliAODJet.cxx:186
 AliAODJet.cxx:187
 AliAODJet.cxx:188
 AliAODJet.cxx:189
 AliAODJet.cxx:190
 AliAODJet.cxx:191
 AliAODJet.cxx:192
 AliAODJet.cxx:193
 AliAODJet.cxx:194
 AliAODJet.cxx:195
 AliAODJet.cxx:196
 AliAODJet.cxx:197
 AliAODJet.cxx:198
 AliAODJet.cxx:199
 AliAODJet.cxx:200
 AliAODJet.cxx:201
 AliAODJet.cxx:202
 AliAODJet.cxx:203
 AliAODJet.cxx:204
 AliAODJet.cxx:205
 AliAODJet.cxx:206
 AliAODJet.cxx:207
 AliAODJet.cxx:208
 AliAODJet.cxx:209
 AliAODJet.cxx:210
 AliAODJet.cxx:211
 AliAODJet.cxx:212
 AliAODJet.cxx:213
 AliAODJet.cxx:214
 AliAODJet.cxx:215
 AliAODJet.cxx:216
 AliAODJet.cxx:217
 AliAODJet.cxx:218
 AliAODJet.cxx:219
 AliAODJet.cxx:220
 AliAODJet.cxx:221
 AliAODJet.cxx:222
 AliAODJet.cxx:223
 AliAODJet.cxx:224
 AliAODJet.cxx:225
 AliAODJet.cxx:226
 AliAODJet.cxx:227
 AliAODJet.cxx:228
 AliAODJet.cxx:229
 AliAODJet.cxx:230
 AliAODJet.cxx:231
 AliAODJet.cxx:232
 AliAODJet.cxx:233
 AliAODJet.cxx:234
 AliAODJet.cxx:235
 AliAODJet.cxx:236
 AliAODJet.cxx:237