ROOT logo
/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
// AliFemtoPairCutRadialDistanceLM - a pair cut which checks                   //
// for some pair qualities that attempt to identify slit/doubly                //
// reconstructed tracks and also selects pairs based on their separation       //
// at the entrance to the TPC                                                  //
//                                                                             //
/////////////////////////////////////////////////////////////////////////////////
/********************************************************************************
 *
 * Author: Johanna Gramling, University of Heidelberg, jgramlin@cern.ch
 *         Malgorzata Janik, Warsaw University of Technology, majanik@cern.ch
 *         Lukasz Graczykowski, Warsaw University of Technology, lgraczyk@cern.ch
 *         Jorge Mercado, University of Heidelberg, jmercado@cern.ch
 *
 ********************************************************************************/

#include "AliFemtoPairCutRadialDistanceLM.h"
#include <string>
#include <cstdio>

#ifdef __ROOT__
ClassImp(AliFemtoPairCutRadialDistanceLM)
#endif

//__________________
AliFemtoPairCutRadialDistanceLM::AliFemtoPairCutRadialDistanceLM():
  AliFemtoPairCutAntiGamma(),
  fDPhiStarMin(0),
  fEtaMin(0),
  fMinRad(0.8),
  fMagSign(1)
{
}
//__________________
AliFemtoPairCutRadialDistanceLM::AliFemtoPairCutRadialDistanceLM(const AliFemtoPairCutRadialDistanceLM& c) : 
  AliFemtoPairCutAntiGamma(c),
  fDPhiStarMin(0), 
  fEtaMin(0),
  fMinRad(0.8),
  fMagSign(1)
{ 
  fDPhiStarMin = c.fDPhiStarMin;
  fEtaMin = c.fEtaMin;
  fMinRad = c.fMinRad;
  fMagSign = c.fMagSign;
}

//__________________
AliFemtoPairCutRadialDistanceLM::~AliFemtoPairCutRadialDistanceLM(){
  /* no-op */
}
//__________________
bool AliFemtoPairCutRadialDistanceLM::Pass(const AliFemtoPair* pair){
  // Accept pairs based on their TPC entrance separation and
  // quality and sharity
  //  bool temp = true;
  
//    double pih = 3.14159265358979312;
//    double pit = 6.28318530717958623;

  
  double phi1 = pair->Track1()->Track()->P().Phi();
  double phi2 = pair->Track2()->Track()->P().Phi();
  double chg1 = pair->Track1()->Track()->Charge();
  double chg2 = pair->Track2()->Track()->Charge();
  double ptv1 = pair->Track1()->Track()->Pt();
  double ptv2 = pair->Track2()->Track()->Pt();
  double eta1 = pair->Track1()->Track()->P().PseudoRapidity();
  double eta2 = pair->Track2()->Track()->P().PseudoRapidity();


  Double_t rad;
  Bool_t pass5 = kTRUE;
  
//   cout << "min radius: " << fMinRad << endl;
//   cout << "min deta: " << fEtaMin << endl;
//   cout << "min dphi: " << fDPhiStarMin << endl;
  
    double etad = eta2 - eta1;
    
    if (fabs(etad)<fEtaMin)
    {
      rad = fMinRad;
      for (Double_t iter=fMinRad*100; iter<251; iter+=1.0) {
	Double_t dps = (phi1-phi2+(TMath::ASin(-0.075*chg1*fMagSign*rad/ptv1))-(TMath::ASin(-0.075*chg2*fMagSign*rad/ptv2)));
	if (fabs(dps)<fDPhiStarMin) {
	  //       cout << "5% cut is not passed - returning" << endl;
	  pass5 = kFALSE;
	  break;
	}
	rad+=0.01;
      }
    }
  

  if (pass5) {
    pass5 = AliFemtoPairCutAntiGamma::Pass(pair);
  }
  else
    fNPairsFailed++;

  return pass5;
}
//__________________
AliFemtoString AliFemtoPairCutRadialDistanceLM::Report(){
  // Prepare a report from the execution
  string stemp = "AliFemtoRadialDistance Pair Cut - remove shared and split pairs and pairs with small separation at the specified radius\n";  char ctemp[100];
  snprintf(ctemp , 100, "Accept pair with separation more that %f",fDPhiStarMin);
  stemp += ctemp;
  snprintf(ctemp , 100, "Number of pairs which passed:\t%ld  Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed);
  stemp += ctemp;
  AliFemtoString returnThis = stemp;
  return returnThis;}
//__________________

TList *AliFemtoPairCutRadialDistanceLM::ListSettings()
{
  // return a list of settings in a writable form
  TList *tListSetttings =  AliFemtoPairCutAntiGamma::ListSettings();
  char buf[200];
  snprintf(buf, 200, "AliFemtoPairCutRadialDistanceLM.phistarsepmin=%f", fDPhiStarMin);
  tListSetttings->AddLast(new TObjString(buf));

  return tListSetttings;
}

void AliFemtoPairCutRadialDistanceLM::SetPhiStarDifferenceMinimum(double dtpc)
{
  fDPhiStarMin = dtpc;
}

void AliFemtoPairCutRadialDistanceLM::SetEtaDifferenceMinimum(double etpc) 
{
  fEtaMin = etpc;
}


void AliFemtoPairCutRadialDistanceLM::SetMinimumRadius(double minrad) 
{
  fMinRad = minrad;
}

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