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 "AliFemtoPairCutRadialDistanceKK.h"
#include <string>
#include <cstdio>

#ifdef __ROOT__
ClassImp(AliFemtoPairCutRadialDistanceKK)
#endif

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

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

  return *this;
}
//__________________
bool AliFemtoPairCutRadialDistanceKK::Pass(const AliFemtoPair* pair){
  // Accept pairs based on their TPC entrance separation and
  // quality and sharity
  //  bool temp = true;
  
    double PI = 3.14159265358979312;
//    double pit = 6.28318530717958623;


 Bool_t pass5 = kTRUE;
  
  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());


    AliAODEvent *fAOD;

    if (!aodH) {
        // AliWarning("Could not get AODInputHandler");
        return false;
    }
    else {

        fAOD = aodH->GetEvent();
    }
    
     Double_t Bfield = fAOD->GetMagneticField();
  

    if(fabs(eta1-eta2) < fEtaMin) {
  
     // propagate through B field to r=1m
    Double_t phistar1 = phi1 - asin(chg1*(0.1*Bfield)*0.15/ptv1);// 0.15 for D=1m
    if(phistar1 > 2*PI) phistar1 -= 2*PI;
    if(phistar1 < 0) phistar1 += 2*PI;
    Double_t phistar2 = phi2 - asin(chg2*(0.1*Bfield)*0.15/ptv2);// 0.15 for D=1m 
    if(phistar2 > 2*PI) phistar2 -= 2*PI;
    if(phistar2 < 0) phistar2 += 2*PI;

    Double_t deltaphi = phistar1 - phistar2;
    if(deltaphi > PI) deltaphi -= 2*PI;
    if(deltaphi < -PI) deltaphi += 2*PI;
    deltaphi = fabs(deltaphi);

   
     if(deltaphi < fDPhiStarMin){ 
    //  cout<<"---1--- phi1 = "<<phi1<<" phi2 = "<<phi2<<endl;
    //  cout<<" eta1 = "<<eta1<<" eta2 = "<<eta2<<endl;
    //  cout<<" ptv1 = "<<ptv1<<" ptv2 = "<<ptv2<<endl;
    //   cout<<"----1-- "<< deltaphi<<" deltaeta"<< fabs(eta1-eta2)<<endl;
       pass5 = kFALSE;
//	break;
     }
     else
     {
    // propagate through B field to r=1.6m
    phistar1 = phi1 - asin(chg1*(0.1*Bfield)*0.24/ptv1);// mine. 0.24 for D=1.6m
    if(phistar1 > 2*PI) phistar1 -= 2*PI;
    if(phistar1 < 0) phistar1 += 2*PI;
    phistar2 = phi2 - asin(chg2*(0.1*Bfield)*0.24/ptv2);// mine. 0.24 for D=1.6m 
    if(phistar2 > 2*PI) phistar2 -= 2*PI;
    if(phistar2 < 0) phistar2 += 2*PI;

    deltaphi = phistar1 - phistar2;
    if(deltaphi > PI) deltaphi -= 2*PI;
    if(deltaphi < -PI) deltaphi += 2*PI;
    deltaphi = fabs(deltaphi);

    if(deltaphi < fDPhiStarMin){ 	
//      cout<<"---2--- phi1 = "<<phi1<<" phi2 = "<<phi2<<endl;
//      cout<<" eta1 = "<<eta1<<" eta2 = "<<eta2<<endl;
//      cout<<" ptv1 = "<<ptv1<<" ptv2 = "<<ptv2<<endl;
//      cout<<"----2-- "<< deltaphi<<" deltaeta"<< fabs(eta1-eta2)<<endl;
        pass5 = kFALSE;
//	break;
      }
      else
      {
       pass5 = kTRUE;
      }
    
    }  

 }

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

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

  return tListSetttings;
}

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

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


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

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