ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2010, 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 for cuts on AOD reconstructed Jpsi->ee
//
// Author: A.Dainese, andrea.dainese@pd.infn.it
/////////////////////////////////////////////////////////////

#include <TDatabasePDG.h>
#include <Riostream.h>

#include "AliRDHFCutsJpsitoee.h"
#include "AliAODRecoDecayHF2Prong.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"

using std::cout;
using std::endl;

ClassImp(AliRDHFCutsJpsitoee)

//--------------------------------------------------------------------------
AliRDHFCutsJpsitoee::AliRDHFCutsJpsitoee(const char* name) : 
AliRDHFCuts(name)
{
  //
  // Default Constructor
  //
  Int_t nvars=9;
  SetNVars(nvars);
  TString varNames[9]={"inv. mass [GeV]",   
		       "dca [cm]",
		       "cosThetaStar", // negative electron 
		       "pTP [GeV/c]",
		       "pTN [GeV/c]",
		       "d0P [cm]",
		       "d0N [cm]",
		       "d0d0 [cm^2]",
		       "cosThetaPoint"};
  Bool_t isUpperCut[9]={kTRUE,
			kTRUE,
			kTRUE,
			kFALSE,
			kFALSE,
			kTRUE,
			kTRUE,
			kTRUE,
			kFALSE};
  SetVarNames(nvars,varNames,isUpperCut);
  Bool_t forOpt[9]={kFALSE,
		    kTRUE,
		    kTRUE,
		    kFALSE,
		    kFALSE,
		    kFALSE,
		    kFALSE,
		    kTRUE,
		    kTRUE};
  SetVarsForOpt(4,forOpt);
  Float_t limits[2]={0,999999999.};
  SetPtBins(2,limits);
}
//--------------------------------------------------------------------------
AliRDHFCutsJpsitoee::AliRDHFCutsJpsitoee(const AliRDHFCutsJpsitoee &source) :
  AliRDHFCuts(source)
{
  //
  // Copy constructor
  //

}
//--------------------------------------------------------------------------
AliRDHFCutsJpsitoee &AliRDHFCutsJpsitoee::operator=(const AliRDHFCutsJpsitoee &source)
{
  //
  // assignment operator
  //
  if(&source == this) return *this;

  AliRDHFCuts::operator=(source);

  return *this;
}


//---------------------------------------------------------------------------
void AliRDHFCutsJpsitoee::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) {
  // 
  // Fills in vars the values of the variables 
  //

  if(nvars!=fnVarsForOpt) {
    printf("AliRDHFCutsJpsitoee::GetCutsVarsForOpt: wrong number of variables\n");
    return;
  }

  AliAODRecoDecayHF2Prong *dd = (AliAODRecoDecayHF2Prong*)d;
 
  Int_t iter=-1;
  if(fVarsForOpt[0]){
    iter++;
    vars[iter]=dd->InvMassJPSIee();
  }
  if(fVarsForOpt[1]){
    iter++;
    vars[iter]=dd->GetDCA();
  }
  if(fVarsForOpt[2]){
    iter++;
    vars[iter] = dd->CosThetaStarJPSI();
  }
  if(fVarsForOpt[3]){
    iter++;
    if(pdgdaughters[0]==11) vars[iter]=dd->PtProng(0);
  }
  if(fVarsForOpt[4]){
    iter++;
    if(pdgdaughters[1]==11) vars[iter]=dd->PtProng(1);
  }
  if(fVarsForOpt[5]){
    iter++;
    vars[iter]=dd->Getd0Prong(0);
  }
  if(fVarsForOpt[6]){
    iter++;
    vars[iter]=dd->Getd0Prong(1);
  }
  if(fVarsForOpt[7]){
    iter++;
    vars[iter]= dd->Prodd0d0();
  }
  if(fVarsForOpt[8]){
    iter++;
    vars[iter]=dd->CosPointingAngle();
  }
  
  return;
}
//---------------------------------------------------------------------------
Int_t AliRDHFCutsJpsitoee::IsSelected(TObject* obj,Int_t selectionLevel) {
  //
  // Apply selection
  //

  if(!fCutsRD){
    cout<<"Cut matrix not inizialized. Exit..."<<endl;
    return 0;
  }
  //PrintAll();
  AliAODRecoDecayHF2Prong* d=(AliAODRecoDecayHF2Prong*)obj;

  if(!d){
    cout<<"AliAODRecoDecayHF2Prong null"<<endl;
    return 0;
  }

  if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;


  // selection on daughter tracks 
  if(selectionLevel==AliRDHFCuts::kAll || 
     selectionLevel==AliRDHFCuts::kTracks) {
    if(!AreDaughtersSelected(d)) return 0;
  }


  // selection on candidate
  if(selectionLevel==AliRDHFCuts::kAll || 
     selectionLevel==AliRDHFCuts::kCandidate) {
    
    Double_t pt=d->Pt();
    Double_t mJPsi,ctsJPsi;

    Double_t mJPSIPDG = TDatabasePDG::Instance()->GetParticle(443)->Mass();
    
    Int_t ptbin=PtBin(pt);

    if(d->PtProng(1) < fCutsRD[GetGlobalIndex(3,ptbin)] || d->PtProng(0) < fCutsRD[GetGlobalIndex(4,ptbin)]) return 0;

    if(TMath::Abs(d->Getd0Prong(1)) > fCutsRD[GetGlobalIndex(5,ptbin)] ||
       TMath::Abs(d->Getd0Prong(0)) > fCutsRD[GetGlobalIndex(6,ptbin)]) return 0;

  
    if(d->GetDCA() > fCutsRD[GetGlobalIndex(1,ptbin)]) return 0;

    mJPsi=d->InvMassJPSIee();
    if(TMath::Abs(mJPsi-mJPSIPDG)    > fCutsRD[GetGlobalIndex(0,ptbin)]) return 0;

    ctsJPsi=d->CosThetaStarJPSI();
    if(TMath::Abs(ctsJPsi)    > fCutsRD[GetGlobalIndex(2,ptbin)]) return 0;

    if(d->Prodd0d0() > fCutsRD[GetGlobalIndex(7,ptbin)]) return 0;
    
    if(d->CosPointingAngle()   < fCutsRD[GetGlobalIndex(8,ptbin)]) return 0;
  }

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