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$

#include "AliMUONObjectPair.h"

#include "AliLog.h"
#include <Riostream.h>

//-----------------------------------------------------------------------------
/// \class AliMUONObjectPair
///
/// The equivalent of a std::pair<TObject*,TObject*> ;-)
///
/// What else can be said ? That if we'd been using STL, that class
/// would not be there, thus saving some octets ? No comment.
/// 
/// Well, in fact, there *is* a difference wrt to std::pair : here
/// we decide on the ownership of the first and/or second object...
///
/// \author Laurent Aphecetche
//-----------------------------------------------------------------------------

using std::cout;
using std::endl;
/// \cond CLASSIMP
ClassImp(AliMUONObjectPair)
/// \endcond

//_____________________________________________________________________________
AliMUONObjectPair::AliMUONObjectPair() 
: TObject(),
fFirst(0x0),
fSecond(0x0),
fIsOwnerOfFirst(kTRUE),
fIsOwnerOfSecond(kTRUE)
{
  /// ctor
  AliDebug(1,Form("this=%p",this));
}

//_____________________________________________________________________________
AliMUONObjectPair::AliMUONObjectPair(TObject* first, 
                  TObject* second,
                  Bool_t isOwnerOfFirst,
                  Bool_t isOwnerOfSecond)
: TObject(),
fFirst(first),
fSecond(second),
fIsOwnerOfFirst(isOwnerOfFirst),
fIsOwnerOfSecond(isOwnerOfSecond)
{
  /// ctor
  AliDebug(1,Form("this=%p first is %s second is %s",
                  this,
                  (first ? first->ClassName() : "0x0"),
                  (second ? second->ClassName() : "0x0")
                  ));

}

//_____________________________________________________________________________
AliMUONObjectPair::AliMUONObjectPair(const AliMUONObjectPair& other)
: TObject(other),
fFirst(0x0),
fSecond(0x0),
fIsOwnerOfFirst(kTRUE),
fIsOwnerOfSecond(kTRUE)
{
  /// copy ctor
  AliDebug(1,Form("this=%p copy ctor",this));
  other.Copy(*this);
}

//_____________________________________________________________________________
AliMUONObjectPair& 
AliMUONObjectPair::operator=(const AliMUONObjectPair& other)
{
  /// assignement operator
  if ( this != &other)
  {
    other.Copy(*this);
  }
  return *this;
}

//_____________________________________________________________________________
AliMUONObjectPair::~AliMUONObjectPair()
{
  /// dtor
  AliDebug(1,Form("this=%p",this));
  if ( fIsOwnerOfFirst ) delete fFirst;
  if ( fIsOwnerOfSecond ) delete fSecond;
}

//_____________________________________________________________________________
void
AliMUONObjectPair::Clear(Option_t*)
{
  /// Reset
  if ( fIsOwnerOfFirst ) delete fFirst;
  if ( fIsOwnerOfSecond ) delete fSecond;
  fFirst = 0x0;
  fSecond = 0x0;
}

//_____________________________________________________________________________
void
AliMUONObjectPair::Copy(TObject& other) const
{
  /// Copy this to other (used by copy ctor and operator=)
  
  TObject::Copy(other);
  AliMUONObjectPair& pair = (AliMUONObjectPair&)(other);
  pair.fIsOwnerOfFirst = fIsOwnerOfFirst;
  pair.fIsOwnerOfSecond = fIsOwnerOfSecond;
  if ( fIsOwnerOfFirst ) 
  {
    pair.fFirst = fFirst->Clone();
  }
  else
  {
    pair.fFirst = fFirst;
  }
  if ( fIsOwnerOfSecond )
  {
    pair.fSecond = fSecond->Clone();
  }
  else
  {
    pair.fSecond = fSecond;
  }
}

//_____________________________________________________________________________
void
AliMUONObjectPair::Print(Option_t* opt) const
{
  /// Printout
  
  cout << "First:";
  if ( First() ) 
  {
    First()->Print(opt);
  }
  else
  {
    cout << " NULL ";
  }
  cout << endl;
  cout << "Second:";
  if ( Second() ) 
  {
    Second()->Print(opt);
  }
  else
  {
    cout << " NULL ";
  }
  cout << endl;    
}
 AliMUONObjectPair.cxx:1
 AliMUONObjectPair.cxx:2
 AliMUONObjectPair.cxx:3
 AliMUONObjectPair.cxx:4
 AliMUONObjectPair.cxx:5
 AliMUONObjectPair.cxx:6
 AliMUONObjectPair.cxx:7
 AliMUONObjectPair.cxx:8
 AliMUONObjectPair.cxx:9
 AliMUONObjectPair.cxx:10
 AliMUONObjectPair.cxx:11
 AliMUONObjectPair.cxx:12
 AliMUONObjectPair.cxx:13
 AliMUONObjectPair.cxx:14
 AliMUONObjectPair.cxx:15
 AliMUONObjectPair.cxx:16
 AliMUONObjectPair.cxx:17
 AliMUONObjectPair.cxx:18
 AliMUONObjectPair.cxx:19
 AliMUONObjectPair.cxx:20
 AliMUONObjectPair.cxx:21
 AliMUONObjectPair.cxx:22
 AliMUONObjectPair.cxx:23
 AliMUONObjectPair.cxx:24
 AliMUONObjectPair.cxx:25
 AliMUONObjectPair.cxx:26
 AliMUONObjectPair.cxx:27
 AliMUONObjectPair.cxx:28
 AliMUONObjectPair.cxx:29
 AliMUONObjectPair.cxx:30
 AliMUONObjectPair.cxx:31
 AliMUONObjectPair.cxx:32
 AliMUONObjectPair.cxx:33
 AliMUONObjectPair.cxx:34
 AliMUONObjectPair.cxx:35
 AliMUONObjectPair.cxx:36
 AliMUONObjectPair.cxx:37
 AliMUONObjectPair.cxx:38
 AliMUONObjectPair.cxx:39
 AliMUONObjectPair.cxx:40
 AliMUONObjectPair.cxx:41
 AliMUONObjectPair.cxx:42
 AliMUONObjectPair.cxx:43
 AliMUONObjectPair.cxx:44
 AliMUONObjectPair.cxx:45
 AliMUONObjectPair.cxx:46
 AliMUONObjectPair.cxx:47
 AliMUONObjectPair.cxx:48
 AliMUONObjectPair.cxx:49
 AliMUONObjectPair.cxx:50
 AliMUONObjectPair.cxx:51
 AliMUONObjectPair.cxx:52
 AliMUONObjectPair.cxx:53
 AliMUONObjectPair.cxx:54
 AliMUONObjectPair.cxx:55
 AliMUONObjectPair.cxx:56
 AliMUONObjectPair.cxx:57
 AliMUONObjectPair.cxx:58
 AliMUONObjectPair.cxx:59
 AliMUONObjectPair.cxx:60
 AliMUONObjectPair.cxx:61
 AliMUONObjectPair.cxx:62
 AliMUONObjectPair.cxx:63
 AliMUONObjectPair.cxx:64
 AliMUONObjectPair.cxx:65
 AliMUONObjectPair.cxx:66
 AliMUONObjectPair.cxx:67
 AliMUONObjectPair.cxx:68
 AliMUONObjectPair.cxx:69
 AliMUONObjectPair.cxx:70
 AliMUONObjectPair.cxx:71
 AliMUONObjectPair.cxx:72
 AliMUONObjectPair.cxx:73
 AliMUONObjectPair.cxx:74
 AliMUONObjectPair.cxx:75
 AliMUONObjectPair.cxx:76
 AliMUONObjectPair.cxx:77
 AliMUONObjectPair.cxx:78
 AliMUONObjectPair.cxx:79
 AliMUONObjectPair.cxx:80
 AliMUONObjectPair.cxx:81
 AliMUONObjectPair.cxx:82
 AliMUONObjectPair.cxx:83
 AliMUONObjectPair.cxx:84
 AliMUONObjectPair.cxx:85
 AliMUONObjectPair.cxx:86
 AliMUONObjectPair.cxx:87
 AliMUONObjectPair.cxx:88
 AliMUONObjectPair.cxx:89
 AliMUONObjectPair.cxx:90
 AliMUONObjectPair.cxx:91
 AliMUONObjectPair.cxx:92
 AliMUONObjectPair.cxx:93
 AliMUONObjectPair.cxx:94
 AliMUONObjectPair.cxx:95
 AliMUONObjectPair.cxx:96
 AliMUONObjectPair.cxx:97
 AliMUONObjectPair.cxx:98
 AliMUONObjectPair.cxx:99
 AliMUONObjectPair.cxx:100
 AliMUONObjectPair.cxx:101
 AliMUONObjectPair.cxx:102
 AliMUONObjectPair.cxx:103
 AliMUONObjectPair.cxx:104
 AliMUONObjectPair.cxx:105
 AliMUONObjectPair.cxx:106
 AliMUONObjectPair.cxx:107
 AliMUONObjectPair.cxx:108
 AliMUONObjectPair.cxx:109
 AliMUONObjectPair.cxx:110
 AliMUONObjectPair.cxx:111
 AliMUONObjectPair.cxx:112
 AliMUONObjectPair.cxx:113
 AliMUONObjectPair.cxx:114
 AliMUONObjectPair.cxx:115
 AliMUONObjectPair.cxx:116
 AliMUONObjectPair.cxx:117
 AliMUONObjectPair.cxx:118
 AliMUONObjectPair.cxx:119
 AliMUONObjectPair.cxx:120
 AliMUONObjectPair.cxx:121
 AliMUONObjectPair.cxx:122
 AliMUONObjectPair.cxx:123
 AliMUONObjectPair.cxx:124
 AliMUONObjectPair.cxx:125
 AliMUONObjectPair.cxx:126
 AliMUONObjectPair.cxx:127
 AliMUONObjectPair.cxx:128
 AliMUONObjectPair.cxx:129
 AliMUONObjectPair.cxx:130
 AliMUONObjectPair.cxx:131
 AliMUONObjectPair.cxx:132
 AliMUONObjectPair.cxx:133
 AliMUONObjectPair.cxx:134
 AliMUONObjectPair.cxx:135
 AliMUONObjectPair.cxx:136
 AliMUONObjectPair.cxx:137
 AliMUONObjectPair.cxx:138
 AliMUONObjectPair.cxx:139
 AliMUONObjectPair.cxx:140
 AliMUONObjectPair.cxx:141
 AliMUONObjectPair.cxx:142
 AliMUONObjectPair.cxx:143
 AliMUONObjectPair.cxx:144
 AliMUONObjectPair.cxx:145
 AliMUONObjectPair.cxx:146
 AliMUONObjectPair.cxx:147
 AliMUONObjectPair.cxx:148
 AliMUONObjectPair.cxx:149
 AliMUONObjectPair.cxx:150
 AliMUONObjectPair.cxx:151
 AliMUONObjectPair.cxx:152
 AliMUONObjectPair.cxx:153
 AliMUONObjectPair.cxx:154
 AliMUONObjectPair.cxx:155
 AliMUONObjectPair.cxx:156
 AliMUONObjectPair.cxx:157
 AliMUONObjectPair.cxx:158
 AliMUONObjectPair.cxx:159
 AliMUONObjectPair.cxx:160
 AliMUONObjectPair.cxx:161
 AliMUONObjectPair.cxx:162
 AliMUONObjectPair.cxx:163
 AliMUONObjectPair.cxx:164
 AliMUONObjectPair.cxx:165
 AliMUONObjectPair.cxx:166
 AliMUONObjectPair.cxx:167
 AliMUONObjectPair.cxx:168
 AliMUONObjectPair.cxx:169
 AliMUONObjectPair.cxx:170
 AliMUONObjectPair.cxx:171
 AliMUONObjectPair.cxx:172
 AliMUONObjectPair.cxx:173
 AliMUONObjectPair.cxx:174