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:   AliAODPWG4Particle.h $ */

//-------------------------------------------------------------------------
//     AOD objects class in use in the CaloTrackCorrelations
//     analysis pacackge ($ALICE_ROOT/PWGGA/CaloTrackCorrelations)
//
//     Author: Gustavo Conesa Balbastre - CNRS-LPSC-Grenoble
//-------------------------------------------------------------------------

//-- ROOT system --

//-- Analysis system
#include "AliAODPWG4Particle.h"

ClassImp(AliAODPWG4Particle)


//______________________________________________________________________________
AliAODPWG4Particle::AliAODPWG4Particle() :
AliVParticle(),
fMomentum(0),fPdg(-1), fTag(0), fLabel(-1),
fCaloLabel(), fTrackLabel(), fDetectorTag(-1),
fBadDist(0), fNLM(0), fM02(0),
fTime(0),fNCells(0),fSuperModule(0),
fDecayTag(0),fIsolated(0), fLeadingParticle(0),
fDisp(0), fTof(0), fCharged(0),
fTagged(0), fFidArea(0), fInputFileIndex(0),fBtag(0)
{
  // constructor
  fCaloLabel [0] = -1;
  fCaloLabel [1] = -1;
  fTrackLabel[0] = -1;
  fTrackLabel[1] = -1;
  fTrackLabel[2] = -1;
  fTrackLabel[3] = -1;
}

//______________________________________________________________________________
AliAODPWG4Particle::AliAODPWG4Particle(Double_t px, Double_t py, Double_t pz, Double_t e):
  AliVParticle(),
  fMomentum(0),fPdg(-1), fTag(0), fLabel(-1),
  fCaloLabel(), fTrackLabel(), fDetectorTag(-1),
  fBadDist(0), fNLM(0), fM02(0),
  fTime(0),fNCells(0),fSuperModule(0),
  fDecayTag(0),fIsolated(0), fLeadingParticle(0),
  fDisp(0), fTof(0), fCharged(0),
  fTagged(0), fFidArea(0), fInputFileIndex(0),fBtag(0)
{
  // constructor
  fMomentum = new TLorentzVector(px, py, pz, e);
  
  fCaloLabel [0] = -1;
  fCaloLabel [1] = -1;
  fTrackLabel[0] = -1;
  fTrackLabel[1] = -1;	
  fTrackLabel[2] = -1;
  fTrackLabel[3] = -1;	
}

//______________________________________________________________________________
AliAODPWG4Particle::AliAODPWG4Particle(TLorentzVector & p):
  AliVParticle(),
  fMomentum(0),fPdg(-1), fTag(0), fLabel(-1),
  fCaloLabel(), fTrackLabel(),fDetectorTag(-1),
  fBadDist(0), fNLM(0), fM02(0),
  fTime(0),fNCells(0),fSuperModule(0),
  fDecayTag(0),fIsolated(0), fLeadingParticle(0),
  fDisp(0), fTof(0), fCharged(0),
  fTagged(0), fFidArea(0), fInputFileIndex(0),fBtag(0)
{
  // constructor
  fMomentum = new TLorentzVector(p);
  
  fCaloLabel [0] = -1;
  fCaloLabel [1] = -1;
  fTrackLabel[0] = -1;
  fTrackLabel[1] = -1;
  fTrackLabel[2] = -1;
  fTrackLabel[3] = -1;
}


//______________________________________________________________________________
AliAODPWG4Particle::~AliAODPWG4Particle() 
{
  // destructor
    delete fMomentum;
}

//______________________________________________________________________________
void AliAODPWG4Particle::Clear(const Option_t* /*opt*/) 
{
  //clear
  delete fMomentum;
}

//______________________________________________________________________________
AliAODPWG4Particle::AliAODPWG4Particle(const AliAODPWG4Particle& part) :
  AliVParticle(part),
  fMomentum(0), fPdg(part.fPdg), fTag(part.fTag), fLabel(part.fLabel),
  fCaloLabel(), fTrackLabel(), fDetectorTag(part.fDetectorTag),
  fBadDist(part.fBadDist),fNLM(part.fNLM), fM02(part.fM02),
  fTime(part.fTime),fNCells(part.fNCells),fSuperModule(part.fSuperModule),
  fDecayTag(part.fDecayTag),fIsolated(part.fIsolated), fLeadingParticle(part.fLeadingParticle),
  fDisp(part.fDisp), fTof(part.fTof), fCharged(part.fCharged),
  fTagged(part.fTagged), fFidArea(part.fFidArea), fInputFileIndex(part.fInputFileIndex),fBtag(part.fBtag)
{
  // Copy constructor
  fMomentum = new TLorentzVector(*part.fMomentum);
  
  fCaloLabel [0] = part.fCaloLabel[0];
  fCaloLabel [1] = part.fCaloLabel[1];
  fTrackLabel[0] = part.fTrackLabel[0];
  fTrackLabel[1] = part.fTrackLabel[1];
  fTrackLabel[2] = part.fTrackLabel[2];
  fTrackLabel[3] = part.fTrackLabel[3];
}

//________________________________________________________________________________
AliAODPWG4Particle& AliAODPWG4Particle::operator=(const AliAODPWG4Particle & part)
{
  // Assignment operator
  if(this!=&part)
  {
    fPdg   = part.fPdg;
    fTag   = part.fTag;
    fLabel = part.fLabel;
    
    fCaloLabel [0] = part.fCaloLabel[0];
    fCaloLabel [1] = part.fCaloLabel[1];
    fTrackLabel[0] = part.fTrackLabel[0];
    fTrackLabel[1] = part.fTrackLabel[1];
    
    fDetectorTag = part.fDetectorTag;
    fDisp     = part.fDisp;
    fTof      = part.fTof;
    fCharged  = part.fCharged;
    fBadDist  = part.fBadDist;
    fDecayTag = part.fDecayTag;
    
    fNLM      = part.fNLM;
    fM02      = part.fM02;
    fIsolated = part.fIsolated;
    fLeadingParticle =part.fLeadingParticle;

    fBtag     = part.fBtag;
    fFidArea  = part.fFidArea;
    fTagged   = part.fTagged;
    fInputFileIndex =  part.fInputFileIndex;

    if (fMomentum ) delete fMomentum;
    fMomentum = new TLorentzVector(*part.fMomentum);
  }
  
  return *this;
}

//_______________________________________________________________
Bool_t AliAODPWG4Particle::IsPIDOK(const Int_t ipid, const Int_t pdgwanted) const{
  // returns true if particle satisfies given PID criterium
	switch(ipid){
    case 0: return kTRUE ; //No PID at all
    case 1:
	  {
	    if (fPdg == pdgwanted) return kTRUE;
	    else return kFALSE; //Overall PID calculated with bayesian methods.
	  }
    case 2: return fDisp ;   //only dispersion cut
    case 3: return fTof ;    //Only TOF cut
    case 4: return fCharged ;    //Only Charged cut
    case 5: return fDisp && fTof ;  //Dispersion and TOF
    case 6: return fDisp && fCharged ;  //Dispersion and Charged
    case 7: return fTof  && fCharged ;  //TOF and Charged
    case 8: return fDisp && fTof && fCharged ; // all 3 cuts
    default: return kFALSE ; //Not known combination
	}
}

//______________________________________________________________________________
void AliAODPWG4Particle::Print(Option_t* /*option*/) const 
{
  // Print information of all data members
  
  printf("Particle 4-vector:\n");
  printf("     E  = %13.3f", E() );
  printf("     Px = %13.3f", Px());
  printf("     Py = %13.3f", Py());
  printf("     Pz = %13.3f\n", Pz());
  printf("Id PDG     : %d\n",fPdg);
  printf("MC Tag     : %d\n",fTag);
  printf("Dist. to bad channel : %d\n",fBadDist);

  printf("Detector  : %d, Labels:\n",fDetectorTag);
  printf("      Calo: %d, %d \n",fCaloLabel[0],fCaloLabel[1]);
  printf("      Track: %d, %d, %d, %d \n",fTrackLabel[0],fTrackLabel[1],fTrackLabel[2],fTrackLabel[3]);
  
  if(fDetectorTag!=2) // Avoid tracks, AliFiducialCut::kCTS
  {
    printf("Calo param: \n");
    printf("      M02: %2.3f\n",fM02);
    printf("      NCell: %d\n",fNCells);
    printf("      Time: %2.3f\n",fTime);
    printf("      SModule: %d\n",fSuperModule);
  }
  
  printf("Tags: \n");
//  printf("Btag      : %d\n",fBtag);
  printf("     Pi0 Tag   : %d\n",fDecayTag);
  if(fIsolated)        printf("      Isolated! \n");
  if(fLeadingParticle) printf("      Leading! \n");
  
  printf("PID bits :\n");
  printf("     TOF        : %d",fTof);
  printf("     Charged    : %d",fCharged);
  printf("     Dispersion : %d\n",fDisp);

  //  printf("Fid Area  : %d\n",fFidArea);
  //  printf("Input File Index : %d\n",fInputFileIndex);

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