ROOT logo
/////////////////////////////////////////////////////////////////////////////////
//                                                                             //
// AliFemtoPairCutRadialDistance - 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
 *
 ********************************************************************************/

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

#ifdef __ROOT__
ClassImp(AliFemtoPairCutRadialDistance)
#endif

//__________________
AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance():
AliFemtoPairCutAntiGamma(),
  fDPhiStarMin(0),
  fEtaMin(0),
  fMinRad(0.8),
  fMaxRad(2.5),
  fMagSign(1),
  fPhistarmin(kTRUE)
{
}
//__________________
AliFemtoPairCutRadialDistance::AliFemtoPairCutRadialDistance(const AliFemtoPairCutRadialDistance& c) :
  AliFemtoPairCutAntiGamma(c),
  fDPhiStarMin(0),
  fEtaMin(0),
  fMinRad(0.8),
  fMaxRad(2.5),
  fMagSign(1),
  fPhistarmin(kTRUE)
{
  fDPhiStarMin = c.fDPhiStarMin;
  fEtaMin = c.fEtaMin;
  fMinRad = c.fMinRad;
  fMaxRad = c.fMaxRad;
  fMagSign = c.fMagSign;
  fPhistarmin = c.fPhistarmin;
}

//__________________
AliFemtoPairCutRadialDistance::~AliFemtoPairCutRadialDistance(){
  /* no-op */
}
AliFemtoPairCutRadialDistance& AliFemtoPairCutRadialDistance::operator=(const AliFemtoPairCutRadialDistance& c)
{
  if (this != &c) {
    fDPhiStarMin = c.fDPhiStarMin;
    fEtaMin = c.fEtaMin;
    fMinRad = c.fMinRad;
    fMaxRad = c.fMaxRad;
    fMagSign = c.fMagSign;
    fPhistarmin = c.fPhistarmin;

  }

  return *this;
}
//__________________
bool AliFemtoPairCutRadialDistance::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();


  AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  Double_t magsign = 0.0;

  if (!aodH) {
    // AliWarning("Could not get AODInputHandler");
    return false;
  }
  else {
    AliAODEvent *fAOD;
    fAOD = aodH->GetEvent();
    //cout<<fAOD<<endl;
    magsign = fAOD->GetMagneticField();
  }

  if (magsign > 1)
    fMagSign = 1;
  else if ( magsign < 1)
    fMagSign = -1;
  else
    fMagSign = magsign;

  //cout << "mag sign = " << magsign << endl;

  Double_t rad;
  Bool_t pass5 = kTRUE;

  rad = fMinRad;

  if (fPhistarmin) {
    for (rad = fMinRad; rad < fMaxRad; rad += 0.01) {
      Double_t dps = (phi2-phi1+(TMath::ASin(-0.075*chg2*fMagSign*rad/ptv2))-(TMath::ASin(-0.075*chg1*fMagSign*rad/ptv1)));
      dps = TVector2::Phi_mpi_pi(dps);
      Double_t etad = eta2 - eta1;
      if (fabs(etad)<fEtaMin && fabs(dps)<fDPhiStarMin) {
        // cout << "5% cut is not passed - returning" << endl;
        pass5 = kFALSE;
        break;
      }
    }
  }
  else {

    double afsi0b = 0.07510020733*chg1*fMagSign*rad/ptv1;
    double afsi1b = 0.07510020733*chg2*fMagSign*rad/ptv2;

    if (fabs(afsi0b) >=1.) return kTRUE;
    if (fabs(afsi1b) >=1.) return kTRUE;

    Double_t dps =  phi2 - phi1 + TMath::ASin(afsi1b) - TMath::ASin(afsi0b);
    dps = TVector2::Phi_mpi_pi(dps);

    Double_t etad = eta2 - eta1;
    if (fabs(etad)<fEtaMin && fabs(dps)<fDPhiStarMin) {
      pass5 = kFALSE;
    }

  }

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

  return pass5;
}
//__________________
AliFemtoString AliFemtoPairCutRadialDistance::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 *AliFemtoPairCutRadialDistance::ListSettings()
{
  // return a list of settings in a writable form
  TList *tListSetttings =  AliFemtoPairCutAntiGamma::ListSettings();
  char buf[200];
  snprintf(buf, 200, "AliFemtoPairCutRadialDistance.phistarsepmin=%f", fDPhiStarMin);
  tListSetttings->AddLast(new TObjString(buf));

  return tListSetttings;
}

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

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


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

void AliFemtoPairCutRadialDistance::SetMaximumRadius(double maxrad)
{
  fMaxRad = maxrad;
}

void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign)
{
  if(magsign>1) fMagSign = 1;
  else if(magsign<1) fMagSign = -1;
  else fMagSign = magsign;
}

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