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

/////////////////////////////////////////////////////////////
//
// class used to extract and store info of MC particles
//
// Author: X-M. Zhang, zhang@clermont.in2p3.fr
//                     zhangxm@iopp.ccnu.edu.cn
/////////////////////////////////////////////////////////////

#include "AliMuonInfoStoreMC.h"
#include "AliDimuInfoStoreRD.h"
#include "AliDimuInfoStoreMC.h"

ClassImp(AliDimuInfoStoreMC)

const TString AliDimuInfoStoreMC::fgkStdBranchName("DimuMC");
const Int_t   AliDimuInfoStoreMC::fgkSourcesN = 6;

//-----------------------------------------------------------------------------
AliDimuInfoStoreMC::AliDimuInfoStoreMC() :
AliDimuInfoStoreRD(),
fIsFull(kFALSE),
fLorentzP(),
fSource(-1)
{
  //
  // default constructor
  //
}

//-----------------------------------------------------------------------------
AliDimuInfoStoreMC::AliDimuInfoStoreMC(AliMuonInfoStoreMC* const trk0, AliMuonInfoStoreMC* const trk1, UInt_t selMask, Bool_t full) :
AliDimuInfoStoreRD(),
fIsFull(full),
fLorentzP(),
fSource(-1)
{
  //
  // default constructor
  //
  fSelMask = selMask;
  fMuonRef[0] = trk0;
  fMuonRef[1] = trk1;
  fLorentzP = trk0->LorentzP() + trk1->LorentzP();
  AliDimuInfoStoreRD::FillDimuInfo();
  if (fIsFull) this->FindDimuonSourceFull();
  else this->FindDimuonSourceFast();
}

//-----------------------------------------------------------------------------
AliDimuInfoStoreMC::AliDimuInfoStoreMC(const AliDimuInfoStoreMC &src) :
AliDimuInfoStoreRD(src),
fIsFull(src.fIsFull),
fLorentzP(src.fLorentzP),
fSource(src.fSource)
{
  //
  // copy constructor
  //
}

//-----------------------------------------------------------------------------
AliDimuInfoStoreMC& AliDimuInfoStoreMC::operator=(const AliDimuInfoStoreMC &src)
{
  //
  // assignment constructor
  //
  if(&src==this) return *this;

  fIsFull   = src.fIsFull;
  fLorentzP = src.fLorentzP;
  fSource   = src.fSource;

  return *this;
}


//-----------------------------------------------------------------------------
AliDimuInfoStoreMC::~AliDimuInfoStoreMC()
{
  //
  // destructor
  //
}

//-----------------------------------------------------------------------------
void AliDimuInfoStoreMC::FindDimuonSourceFast()
{
  // find corr relation of two particles (fast for p-p)

  AliMuonInfoStoreMC *trk0 = (AliMuonInfoStoreMC*)fMuonRef[0].GetObject();
  Int_t src0 = trk0->Source();
  if (src0<0 || src0==4 || src0==3) {
    fSource=5; return;
  }

  AliMuonInfoStoreMC *trk1 = (AliMuonInfoStoreMC*)fMuonRef[1].GetObject();
  Int_t src1 = trk1->Source();
  if (src1<0 || src1==4 || src1==3) {
    fSource=5; return;
  }

  // Drell-Yan is expected very small at LHC, we ingore it
  Int_t np0 = trk0->ParentsN() - 1;
  if (np0<0) {
    fSource=5; return;
  }
  Int_t np1 = trk1->ParentsN() - 1;
  if (np1<0) {
    fSource=5; return;
  }

  if (trk0->IsMotherAResonance(np0) &&
      trk1->IsMotherAResonance(np1) &&
      trk0->ParentIndex(np0)==trk1->ParentIndex(np1)) {
    fSource=4; return;
  }

  if (src0==0 && src1==0) {
    if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
      fSource = 1;
    else
      fSource = 0;
    return;
  }

  if (src0==1 && src1==1) {
    if ((trk0->ParentIndex(0))==(trk1->ParentIndex(0)))
      fSource = 3;
    else
      fSource = 2;
    return;
  }

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