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

// Comment describing what this class does needed!

// $Id: AliJPiZero.cxx,v 1.3 2008/05/08 13:44:45 djkim Exp $

////////////////////////////////////////////////////
/*!
  \file AliJPiZero.cxx
  \brief
  \author J. Rak, D.J.Kim, R.Diaz (University of Jyvaskyla)
  \email: djkim@jyu.fi
  \version $Revision: 1.3 $
  \date $Date: 2008/05/08 13:44:45 $
*/
////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <TVector3.h>
#include <TLorentzVector.h>

#include  "AliJBaseTrack.h"
#include  "AliJPhoton.h"

#include "AliJPiZero.h"



AliJPiZero::AliJPiZero():
  AliJBaseTrack(),
  fAsymm(-999),
  fMassBin(-999),
  fIsGood(kFALSE),
  fConvPlaneDelta(-999),
  fPtBin(-1)
{
  //constructor
  fPhoton[0] = 0;
  fPhoton[1] = 0;
}
//______________________________________________________________________________
AliJPiZero::AliJPiZero(const AliJPiZero& a):
  AliJBaseTrack(a),
  fAsymm(a.fAsymm),
  fMassBin(a.fMassBin),
  fIsGood(a.fIsGood),
  fConvPlaneDelta(a.fConvPlaneDelta),
  fPtBin(a.fPtBin)
{
  //copy constructor
  fPhoton[0] = a.fPhoton[0];
  fPhoton[1] = a.fPhoton[1];
}

AliJPiZero& AliJPiZero::operator=(const AliJPiZero& pizero){
  //copy constructor
  AliJBaseTrack::operator=(pizero);
  fAsymm = pizero.fAsymm;
  fMassBin = pizero.fMassBin;
  fIsGood = pizero.fIsGood;
  fPhoton[0] = pizero.fPhoton[0];
  fPhoton[1] = pizero.fPhoton[1];
	fConvPlaneDelta = pizero.fConvPlaneDelta;
	fPtBin = pizero.fPtBin;
	
	return *this;
}


//______________________________________________________________________________

bool AliJPiZero::SetMass(AliJPhoton *g1, AliJPhoton *g2){
  //set pi0 four-momentum, assddymetry, inv. mass, pT, phi, theta, energy

  fAsymm    = TMath::Abs((g1->E()-g2->E())/(g1->E()+g2->E()));
  *(TLorentzVector*)this = *(TLorentzVector*)g1 + *(TLorentzVector*)g2;
  
  fPhoton[0] = g1;
  fPhoton[1] = g2;

//   Double_t pimass;
//   pimass = TMath::Sqrt( 2. * g1->E() * g2->E() *
//                          ( 1. - TMath::Cos( g1->Angle( g2->Vect() ))));

  return true;
}

double AliJPiZero::DeltaConversion(){
    // check pair plane vector delta from expected conversion pair plain
    
    TVector3 pplain, phot1, phot2, pplaint, cplain, zplain, convplane;
		
		// pair vector in the pair plane
		pplain = Vect();
// 		cout << "-------------------" << endl;
//  		pplain.Print();
		
		// perpendicular to the plane
		phot1 = fPhoton[0]->Vect();
		phot2 = fPhoton[1]->Vect();
		pplaint = phot1.Cross( phot2 );
// 		pplaint.Print();
		
		// get the pair plane vector
		cplain = pplain.Cross( pplaint ).Unit();
// 		cplain.Print();
		
		// z plane vector
		zplain.SetXYZ( 0, 0, 1 );
// 		zplain.Print();
		
		// expected conversion plane vector
		convplane = pplain.Cross( zplain ).Unit();
// 		convplane.Print();
		
		// get the plane vector cosine similarity
		// both vectors must be unit for this to work
		fConvPlaneDelta = TMath::Abs( TMath::ACos( cplain.Dot( convplane )));
// 		cout << fConvPlaneDelta << endl;
		
		// the result comes out in 0,pi range. Depending on how the z plane vector
		// was chosen (2 options). Merge the results into 0,1/2pi range
		if( fConvPlaneDelta > TMath::Pi() / 2. )
			fConvPlaneDelta = TMath::Pi() - fConvPlaneDelta;
		
    return fConvPlaneDelta;    
}



//______________________________________________________________________________

// double AliJPiZero::operator- (const AliJPiZero &pi0){
// 
//   //========================================
//   // retruns the closest distance between
//   // photon hits bolonging to two pi0
//   //========================================
// 
//   TLorentzVector  v;
//   double d = 1e3;
//   v = fPhoton1 - pi0.fPhoton1;
//   if(v.M() < d) d = v.M();
//   v = fPhoton2 - pi0.fPhoton2;
//   if(v.M() < d) d = v.M();
//   v = fPhoton1 - pi0.fPhoton2;
//   if(v.M() < d) d = v.M();
//   v = fPhoton2 - pi0.fPhoton2;
//   if(v.M() < d) d = v.M();
//   return d;
// }
// 
// //______________________________________________________________________________ 
// AliJPiZero& AliJPiZero::operator= (const AliJPiZero& piz){
//   //operator=
//   if(this != &piz){
//     AliJBaseTrack::operator=(piz);
//     fPhoton1 = piz.fPhoton1;
//     fPhoton2 = piz.fPhoton2;
//     PhotSum  = fPhoton1 + fPhoton2;
//     fAsymm   = piz.fAsymm;
//     fMassBin = piz.fMassBin;
//   }
// 
//   return *this;
// }



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