ROOT logo
 /**************************************************************************
 * Copyright(c) 1998-1999, 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: */

//_________________________________________________________________________
//  Hits class for EMCAL    
//  A hit in EMCAL is the sum of all hits in a tower
//  from a single entering particle             
//*-- Author: Sahal Yacoob (LBL / UCT)
// Based on AliPHOSHit

// --- Standard library ---
#include <Riostream.h>

// --- ROOT system ---

// --- AliRoot header files ---
#include "AliEMCALHit.h"

using std::endl;
ClassImp(AliEMCALHit)

//______________________________________________________________________
AliEMCALHit::AliEMCALHit()
  : fId(0),
    fELOS(0.),
    fPrimary(0),
    fPx(0.),
    fPy(0.),
    fPz(0.),
    fPe(0.),
    fIparent(0),
    fIenergy(0.),
    fTime(0.)
{
    // Default ctor
}

//______________________________________________________________________
AliEMCALHit::AliEMCALHit(const AliEMCALHit & hit) 
  : AliHit(hit),
    fId(hit.fId),
    fELOS(hit.fELOS),
    fPrimary(hit.fPrimary),
    fPx(hit.fPx),
    fPy(hit.fPy),
    fPz(hit.fPz),
    fPe(hit.fPe),
    fIparent(hit.fIparent),
    fIenergy(hit.fIenergy),
    fTime(hit.fTime)
{
    // copy ctor
}
//_____________________________________________________________________
AliEMCALHit& AliEMCALHit::operator = (const AliEMCALHit &source)
{ // assignment operator; use copy ctor
  if (&source == this) return *this;

  new (this) AliEMCALHit(source);
  return *this;
}
//______________________________________________________________________
AliEMCALHit::AliEMCALHit(Int_t shunt, Int_t primary, Int_t track,Int_t iparent, Float_t ienergy, Int_t id,
			 Float_t *hits,Float_t *p)
  : AliHit(shunt, track),
    fId(id),
    fELOS(0.),
    fPrimary(primary),
    fPx(0.),
    fPy(0.),
    fPz(0.),
    fPe(0.),
    fIparent(iparent),
    fIenergy(ienergy),
    fTime(0.)
{
    //
    // Create an EMCAL  hit object
    //
    fX          = hits[0];
    fY          = hits[1];
    fZ          = hits[2];
    fTime       = hits[3] ;
    fELOS       = hits[4];
    fPx          = p[0];
    fPy          = p[1];
    fPz          = p[2];
    fPe          = p[3];
}

//______________________________________________________________________
Bool_t AliEMCALHit::operator==(AliEMCALHit const &rValue) const{ 
    // Two hits are identical if they have the same Id and originat
    // from the same enterring Particle 
    Bool_t rv = kFALSE;

    if ( (fId == rValue.GetId()) && ( fIparent == rValue.GetIparent()))
	rv = kTRUE;

    return rv;
}
//______________________________________________________________________
AliEMCALHit AliEMCALHit::operator+(const AliEMCALHit &rValue){
    // Add the energy of the hit

    fELOS += rValue.GetEnergy() ;
 
    if(rValue.GetTime() < fTime)
      fTime = rValue.GetTime() ;
 
    return *this;

}
//______________________________________________________________________
ostream& operator << (ostream& out,AliEMCALHit& hit){
    // Print out Id and energy

    out << "AliEMCALHit:";
    out << "id=" <<  hit.GetId();
    out << ", Eloss=" <<  hit.GetEnergy();
    out << ", Time=" << hit.GetTime();
    out << "GeV , Track no.=" << hit.GetPrimary();
    out << ", (xyz)=(" << hit.X()<< ","<< hit.Y()<< ","<<hit.Z()<<") cm";
    out << ", fTrack=" << hit.GetTrack();
    out << ", P=(" << hit.GetPx() << "," << hit.GetPy() << "," << hit.GetPz()
                  << "," <<hit.GetPe() << ") GeV"  ;
    out << ", Enterring particle ID" << hit.GetIparent();
    out << ", Enterring particle initial energy = " << hit.GetIenergy() << " GeV" ;
    out << endl;

    return out;
}
 AliEMCALHit.cxx:1
 AliEMCALHit.cxx:2
 AliEMCALHit.cxx:3
 AliEMCALHit.cxx:4
 AliEMCALHit.cxx:5
 AliEMCALHit.cxx:6
 AliEMCALHit.cxx:7
 AliEMCALHit.cxx:8
 AliEMCALHit.cxx:9
 AliEMCALHit.cxx:10
 AliEMCALHit.cxx:11
 AliEMCALHit.cxx:12
 AliEMCALHit.cxx:13
 AliEMCALHit.cxx:14
 AliEMCALHit.cxx:15
 AliEMCALHit.cxx:16
 AliEMCALHit.cxx:17
 AliEMCALHit.cxx:18
 AliEMCALHit.cxx:19
 AliEMCALHit.cxx:20
 AliEMCALHit.cxx:21
 AliEMCALHit.cxx:22
 AliEMCALHit.cxx:23
 AliEMCALHit.cxx:24
 AliEMCALHit.cxx:25
 AliEMCALHit.cxx:26
 AliEMCALHit.cxx:27
 AliEMCALHit.cxx:28
 AliEMCALHit.cxx:29
 AliEMCALHit.cxx:30
 AliEMCALHit.cxx:31
 AliEMCALHit.cxx:32
 AliEMCALHit.cxx:33
 AliEMCALHit.cxx:34
 AliEMCALHit.cxx:35
 AliEMCALHit.cxx:36
 AliEMCALHit.cxx:37
 AliEMCALHit.cxx:38
 AliEMCALHit.cxx:39
 AliEMCALHit.cxx:40
 AliEMCALHit.cxx:41
 AliEMCALHit.cxx:42
 AliEMCALHit.cxx:43
 AliEMCALHit.cxx:44
 AliEMCALHit.cxx:45
 AliEMCALHit.cxx:46
 AliEMCALHit.cxx:47
 AliEMCALHit.cxx:48
 AliEMCALHit.cxx:49
 AliEMCALHit.cxx:50
 AliEMCALHit.cxx:51
 AliEMCALHit.cxx:52
 AliEMCALHit.cxx:53
 AliEMCALHit.cxx:54
 AliEMCALHit.cxx:55
 AliEMCALHit.cxx:56
 AliEMCALHit.cxx:57
 AliEMCALHit.cxx:58
 AliEMCALHit.cxx:59
 AliEMCALHit.cxx:60
 AliEMCALHit.cxx:61
 AliEMCALHit.cxx:62
 AliEMCALHit.cxx:63
 AliEMCALHit.cxx:64
 AliEMCALHit.cxx:65
 AliEMCALHit.cxx:66
 AliEMCALHit.cxx:67
 AliEMCALHit.cxx:68
 AliEMCALHit.cxx:69
 AliEMCALHit.cxx:70
 AliEMCALHit.cxx:71
 AliEMCALHit.cxx:72
 AliEMCALHit.cxx:73
 AliEMCALHit.cxx:74
 AliEMCALHit.cxx:75
 AliEMCALHit.cxx:76
 AliEMCALHit.cxx:77
 AliEMCALHit.cxx:78
 AliEMCALHit.cxx:79
 AliEMCALHit.cxx:80
 AliEMCALHit.cxx:81
 AliEMCALHit.cxx:82
 AliEMCALHit.cxx:83
 AliEMCALHit.cxx:84
 AliEMCALHit.cxx:85
 AliEMCALHit.cxx:86
 AliEMCALHit.cxx:87
 AliEMCALHit.cxx:88
 AliEMCALHit.cxx:89
 AliEMCALHit.cxx:90
 AliEMCALHit.cxx:91
 AliEMCALHit.cxx:92
 AliEMCALHit.cxx:93
 AliEMCALHit.cxx:94
 AliEMCALHit.cxx:95
 AliEMCALHit.cxx:96
 AliEMCALHit.cxx:97
 AliEMCALHit.cxx:98
 AliEMCALHit.cxx:99
 AliEMCALHit.cxx:100
 AliEMCALHit.cxx:101
 AliEMCALHit.cxx:102
 AliEMCALHit.cxx:103
 AliEMCALHit.cxx:104
 AliEMCALHit.cxx:105
 AliEMCALHit.cxx:106
 AliEMCALHit.cxx:107
 AliEMCALHit.cxx:108
 AliEMCALHit.cxx:109
 AliEMCALHit.cxx:110
 AliEMCALHit.cxx:111
 AliEMCALHit.cxx:112
 AliEMCALHit.cxx:113
 AliEMCALHit.cxx:114
 AliEMCALHit.cxx:115
 AliEMCALHit.cxx:116
 AliEMCALHit.cxx:117
 AliEMCALHit.cxx:118
 AliEMCALHit.cxx:119
 AliEMCALHit.cxx:120
 AliEMCALHit.cxx:121
 AliEMCALHit.cxx:122
 AliEMCALHit.cxx:123
 AliEMCALHit.cxx:124
 AliEMCALHit.cxx:125
 AliEMCALHit.cxx:126
 AliEMCALHit.cxx:127
 AliEMCALHit.cxx:128
 AliEMCALHit.cxx:129
 AliEMCALHit.cxx:130
 AliEMCALHit.cxx:131
 AliEMCALHit.cxx:132
 AliEMCALHit.cxx:133
 AliEMCALHit.cxx:134
 AliEMCALHit.cxx:135
 AliEMCALHit.cxx:136
 AliEMCALHit.cxx:137
 AliEMCALHit.cxx:138
 AliEMCALHit.cxx:139
 AliEMCALHit.cxx:140
 AliEMCALHit.cxx:141
 AliEMCALHit.cxx:142
 AliEMCALHit.cxx:143
 AliEMCALHit.cxx:144
 AliEMCALHit.cxx:145
 AliEMCALHit.cxx:146