#include <iostream>
#include <TList.h>
#include <TAxis.h>
#include <THnSparse.h>
#include "AliLog.h"
#include "AliESDtrack.h"
#include "AliExternalTrackParam.h"
#include "TParticle.h"
#include "AlidNdPtBackgroundCuts.h"
using namespace std;
ClassImp(AlidNdPtBackgroundCuts)
AlidNdPtBackgroundCuts::AlidNdPtBackgroundCuts(const Char_t* name,const Char_t *title) :
AliAnalysisCuts(name, title)
, fMinEta(0)
, fMaxEta(0)
, fMinPhi(0)
, fMaxPhi(0)
, fMinPt(0)
, fMaxPt(0)
, fMaxFracSharedClust(0)
, fFillControlHisto(kFALSE)
, fControlHisto(0)
{
Init();
}
AlidNdPtBackgroundCuts::~AlidNdPtBackgroundCuts()
{
if(fControlHisto) delete fControlHisto;
}
void AlidNdPtBackgroundCuts::Init()
{
SetEtaWindow();
SetPhiWindow();
SetPtWindow();
SetMaxFracSharedClust();
const Int_t ptNbins = 56;
Double_t binsPt[ptNbins+1] = {0.,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};
Int_t binsControlHisto[8]= { 201, 401, 101, 30, 30, ptNbins, 101, 3 };
Double_t minControlHisto[8]={-3.0, -2.*TMath::Pi(), -10, -1.5, -1.5, 0., 0., 0.};
Double_t maxControlHisto[8]={ 3.0, 2.*TMath::Pi(), 10, 1.5, 1.5, 16., 1., 3.};
fControlHisto = new THnSparseF("fControlHisto","etasum:dphi:dpt:eta1:eta2:pt1:fracSharedClust1:qsum",8,binsControlHisto,minControlHisto,maxControlHisto);
fControlHisto->SetBinEdges(5,binsPt);
fControlHisto->GetAxis(0)->SetTitle("#eta1+#eta2");
fControlHisto->GetAxis(1)->SetTitle("#phi1-#phi2 (rad)");
fControlHisto->GetAxis(2)->SetTitle("pt1-pt2 (GeV/c)");
fControlHisto->GetAxis(3)->SetTitle("#eta1");
fControlHisto->GetAxis(4)->SetTitle("#eta2");
fControlHisto->GetAxis(5)->SetTitle("pt1 (GeV/c)");
fControlHisto->GetAxis(6)->SetTitle("fracSharedClust1");
fControlHisto->GetAxis(7)->SetTitle("q1+q2");
fControlHisto->Sumw2();
}
Bool_t AlidNdPtBackgroundCuts::IsBackgroundTrack(AliESDtrack *track1, AliESDtrack *track2)
{
if(!track1) return kFALSE;
if(!track2) return kFALSE;
const AliExternalTrackParam *tpcTrack1 = track1->GetTPCInnerParam();
const AliExternalTrackParam *tpcTrack2 = track2->GetTPCInnerParam();
if(!tpcTrack1) return kFALSE;
if(!tpcTrack2) return kFALSE;
if( IsHistogramsOn() )
{
Float_t etasum = tpcTrack1->Eta() + tpcTrack2->Eta();
Float_t dphi = tpcTrack1->Phi() - tpcTrack2->Phi();
Float_t dpt = tpcTrack1->Pt() - tpcTrack2->Pt();
Float_t pt1 = tpcTrack1->Pt();
Float_t qsum = track1->Charge() + track2->Charge();
if(qsum == -2) qsum = 1;
Float_t nclust1 = track1->GetTPCNclsIter1() ;
Float_t nclust2 = track2->GetTPCNclsIter1() ;
Float_t fracSharedClust1 = 0.0;
if(nclust1) fracSharedClust1 = track1->GetTPCnclsS()/Float_t(nclust1);
Double_t vControlHisto[8] = {etasum, dphi, dpt, tpcTrack1->Eta(), tpcTrack2->Eta(), pt1, fracSharedClust1,qsum};
if(nclust1 > 70 && nclust2 > 70)
fControlHisto->Fill(vControlHisto);
}
if ( IsCosmicTrack(track1,track2) || IsSplittedTrack(track1,track2) ) return kTRUE;
else return kFALSE;
return kFALSE;
}
Bool_t AlidNdPtBackgroundCuts::IsCosmicTrack(AliESDtrack *track1, AliESDtrack *track2)
{
if(!track1) return kFALSE;
if(!track2) return kFALSE;
const AliExternalTrackParam *tpcTrack1 = track1->GetTPCInnerParam();
const AliExternalTrackParam *tpcTrack2 = track2->GetTPCInnerParam();
if(!tpcTrack1) return kFALSE;
if(!tpcTrack2) return kFALSE;
Float_t qsum = track1->Charge() + track2->Charge();
Float_t nclust = track1->GetTPCNclsIter1() ;
Float_t fracSharedClust = 0.0;
if(nclust) fracSharedClust = track1->GetTPCnclsS()/Float_t(nclust);
if( qsum != 0) return kFALSE;
return kFALSE;
}
Bool_t AlidNdPtBackgroundCuts::IsSplittedTrack(AliESDtrack *track1, AliESDtrack *track2)
{
if(!track1) return kFALSE;
if(!track2) return kFALSE;
const AliExternalTrackParam *tpcTrack1 = track1->GetTPCInnerParam();
const AliExternalTrackParam *tpcTrack2 = track2->GetTPCInnerParam();
if(!tpcTrack1) return kFALSE;
if(!tpcTrack2) return kFALSE;
return kFALSE;
}
Long64_t AlidNdPtBackgroundCuts::Merge(TCollection* list)
{
if (!list)
return 0;
if (list->IsEmpty())
return 1;
TIterator* iter = list->MakeIterator();
TObject* obj = 0;
Int_t count=0;
while((obj = iter->Next()) != 0)
{
AlidNdPtBackgroundCuts* entry = dynamic_cast<AlidNdPtBackgroundCuts*>(obj);
if (entry == 0)
continue;
fControlHisto->Add(entry->fControlHisto);
count++;
}
return count;
}
AlidNdPtBackgroundCuts.cxx:1 AlidNdPtBackgroundCuts.cxx:2 AlidNdPtBackgroundCuts.cxx:3 AlidNdPtBackgroundCuts.cxx:4 AlidNdPtBackgroundCuts.cxx:5 AlidNdPtBackgroundCuts.cxx:6 AlidNdPtBackgroundCuts.cxx:7 AlidNdPtBackgroundCuts.cxx:8 AlidNdPtBackgroundCuts.cxx:9 AlidNdPtBackgroundCuts.cxx:10 AlidNdPtBackgroundCuts.cxx:11 AlidNdPtBackgroundCuts.cxx:12 AlidNdPtBackgroundCuts.cxx:13 AlidNdPtBackgroundCuts.cxx:14 AlidNdPtBackgroundCuts.cxx:15 AlidNdPtBackgroundCuts.cxx:16 AlidNdPtBackgroundCuts.cxx:17 AlidNdPtBackgroundCuts.cxx:18 AlidNdPtBackgroundCuts.cxx:19 AlidNdPtBackgroundCuts.cxx:20 AlidNdPtBackgroundCuts.cxx:21 AlidNdPtBackgroundCuts.cxx:22 AlidNdPtBackgroundCuts.cxx:23 AlidNdPtBackgroundCuts.cxx:24 AlidNdPtBackgroundCuts.cxx:25 AlidNdPtBackgroundCuts.cxx:26 AlidNdPtBackgroundCuts.cxx:27 AlidNdPtBackgroundCuts.cxx:28 AlidNdPtBackgroundCuts.cxx:29 AlidNdPtBackgroundCuts.cxx:30 AlidNdPtBackgroundCuts.cxx:31 AlidNdPtBackgroundCuts.cxx:32 AlidNdPtBackgroundCuts.cxx:33 AlidNdPtBackgroundCuts.cxx:34 AlidNdPtBackgroundCuts.cxx:35 AlidNdPtBackgroundCuts.cxx:36 AlidNdPtBackgroundCuts.cxx:37 AlidNdPtBackgroundCuts.cxx:38 AlidNdPtBackgroundCuts.cxx:39 AlidNdPtBackgroundCuts.cxx:40 AlidNdPtBackgroundCuts.cxx:41 AlidNdPtBackgroundCuts.cxx:42 AlidNdPtBackgroundCuts.cxx:43 AlidNdPtBackgroundCuts.cxx:44 AlidNdPtBackgroundCuts.cxx:45 AlidNdPtBackgroundCuts.cxx:46 AlidNdPtBackgroundCuts.cxx:47 AlidNdPtBackgroundCuts.cxx:48 AlidNdPtBackgroundCuts.cxx:49 AlidNdPtBackgroundCuts.cxx:50 AlidNdPtBackgroundCuts.cxx:51 AlidNdPtBackgroundCuts.cxx:52 AlidNdPtBackgroundCuts.cxx:53 AlidNdPtBackgroundCuts.cxx:54 AlidNdPtBackgroundCuts.cxx:55 AlidNdPtBackgroundCuts.cxx:56 AlidNdPtBackgroundCuts.cxx:57 AlidNdPtBackgroundCuts.cxx:58 AlidNdPtBackgroundCuts.cxx:59 AlidNdPtBackgroundCuts.cxx:60 AlidNdPtBackgroundCuts.cxx:61 AlidNdPtBackgroundCuts.cxx:62 AlidNdPtBackgroundCuts.cxx:63 AlidNdPtBackgroundCuts.cxx:64 AlidNdPtBackgroundCuts.cxx:65 AlidNdPtBackgroundCuts.cxx:66 AlidNdPtBackgroundCuts.cxx:67 AlidNdPtBackgroundCuts.cxx:68 AlidNdPtBackgroundCuts.cxx:69 AlidNdPtBackgroundCuts.cxx:70 AlidNdPtBackgroundCuts.cxx:71 AlidNdPtBackgroundCuts.cxx:72 AlidNdPtBackgroundCuts.cxx:73 AlidNdPtBackgroundCuts.cxx:74 AlidNdPtBackgroundCuts.cxx:75 AlidNdPtBackgroundCuts.cxx:76 AlidNdPtBackgroundCuts.cxx:77 AlidNdPtBackgroundCuts.cxx:78 AlidNdPtBackgroundCuts.cxx:79 AlidNdPtBackgroundCuts.cxx:80 AlidNdPtBackgroundCuts.cxx:81 AlidNdPtBackgroundCuts.cxx:82 AlidNdPtBackgroundCuts.cxx:83 AlidNdPtBackgroundCuts.cxx:84 AlidNdPtBackgroundCuts.cxx:85 AlidNdPtBackgroundCuts.cxx:86 AlidNdPtBackgroundCuts.cxx:87 AlidNdPtBackgroundCuts.cxx:88 AlidNdPtBackgroundCuts.cxx:89 AlidNdPtBackgroundCuts.cxx:90 AlidNdPtBackgroundCuts.cxx:91 AlidNdPtBackgroundCuts.cxx:92 AlidNdPtBackgroundCuts.cxx:93 AlidNdPtBackgroundCuts.cxx:94 AlidNdPtBackgroundCuts.cxx:95 AlidNdPtBackgroundCuts.cxx:96 AlidNdPtBackgroundCuts.cxx:97 AlidNdPtBackgroundCuts.cxx:98 AlidNdPtBackgroundCuts.cxx:99 AlidNdPtBackgroundCuts.cxx:100 AlidNdPtBackgroundCuts.cxx:101 AlidNdPtBackgroundCuts.cxx:102 AlidNdPtBackgroundCuts.cxx:103 AlidNdPtBackgroundCuts.cxx:104 AlidNdPtBackgroundCuts.cxx:105 AlidNdPtBackgroundCuts.cxx:106 AlidNdPtBackgroundCuts.cxx:107 AlidNdPtBackgroundCuts.cxx:108 AlidNdPtBackgroundCuts.cxx:109 AlidNdPtBackgroundCuts.cxx:110 AlidNdPtBackgroundCuts.cxx:111 AlidNdPtBackgroundCuts.cxx:112 AlidNdPtBackgroundCuts.cxx:113 AlidNdPtBackgroundCuts.cxx:114 AlidNdPtBackgroundCuts.cxx:115 AlidNdPtBackgroundCuts.cxx:116 AlidNdPtBackgroundCuts.cxx:117 AlidNdPtBackgroundCuts.cxx:118 AlidNdPtBackgroundCuts.cxx:119 AlidNdPtBackgroundCuts.cxx:120 AlidNdPtBackgroundCuts.cxx:121 AlidNdPtBackgroundCuts.cxx:122 AlidNdPtBackgroundCuts.cxx:123 AlidNdPtBackgroundCuts.cxx:124 AlidNdPtBackgroundCuts.cxx:125 AlidNdPtBackgroundCuts.cxx:126 AlidNdPtBackgroundCuts.cxx:127 AlidNdPtBackgroundCuts.cxx:128 AlidNdPtBackgroundCuts.cxx:129 AlidNdPtBackgroundCuts.cxx:130 AlidNdPtBackgroundCuts.cxx:131 AlidNdPtBackgroundCuts.cxx:132 AlidNdPtBackgroundCuts.cxx:133 AlidNdPtBackgroundCuts.cxx:134 AlidNdPtBackgroundCuts.cxx:135 AlidNdPtBackgroundCuts.cxx:136 AlidNdPtBackgroundCuts.cxx:137 AlidNdPtBackgroundCuts.cxx:138 AlidNdPtBackgroundCuts.cxx:139 AlidNdPtBackgroundCuts.cxx:140 AlidNdPtBackgroundCuts.cxx:141 AlidNdPtBackgroundCuts.cxx:142 AlidNdPtBackgroundCuts.cxx:143 AlidNdPtBackgroundCuts.cxx:144 AlidNdPtBackgroundCuts.cxx:145 AlidNdPtBackgroundCuts.cxx:146 AlidNdPtBackgroundCuts.cxx:147 AlidNdPtBackgroundCuts.cxx:148 AlidNdPtBackgroundCuts.cxx:149 AlidNdPtBackgroundCuts.cxx:150 AlidNdPtBackgroundCuts.cxx:151 AlidNdPtBackgroundCuts.cxx:152 AlidNdPtBackgroundCuts.cxx:153 AlidNdPtBackgroundCuts.cxx:154 AlidNdPtBackgroundCuts.cxx:155 AlidNdPtBackgroundCuts.cxx:156 AlidNdPtBackgroundCuts.cxx:157 AlidNdPtBackgroundCuts.cxx:158 AlidNdPtBackgroundCuts.cxx:159 AlidNdPtBackgroundCuts.cxx:160 AlidNdPtBackgroundCuts.cxx:161 AlidNdPtBackgroundCuts.cxx:162 AlidNdPtBackgroundCuts.cxx:163 AlidNdPtBackgroundCuts.cxx:164 AlidNdPtBackgroundCuts.cxx:165 AlidNdPtBackgroundCuts.cxx:166 AlidNdPtBackgroundCuts.cxx:167 AlidNdPtBackgroundCuts.cxx:168 AlidNdPtBackgroundCuts.cxx:169 AlidNdPtBackgroundCuts.cxx:170 AlidNdPtBackgroundCuts.cxx:171 AlidNdPtBackgroundCuts.cxx:172 AlidNdPtBackgroundCuts.cxx:173 AlidNdPtBackgroundCuts.cxx:174 AlidNdPtBackgroundCuts.cxx:175 AlidNdPtBackgroundCuts.cxx:176 AlidNdPtBackgroundCuts.cxx:177 AlidNdPtBackgroundCuts.cxx:178 AlidNdPtBackgroundCuts.cxx:179 AlidNdPtBackgroundCuts.cxx:180 AlidNdPtBackgroundCuts.cxx:181 AlidNdPtBackgroundCuts.cxx:182 AlidNdPtBackgroundCuts.cxx:183 AlidNdPtBackgroundCuts.cxx:184 AlidNdPtBackgroundCuts.cxx:185 AlidNdPtBackgroundCuts.cxx:186 AlidNdPtBackgroundCuts.cxx:187 AlidNdPtBackgroundCuts.cxx:188 AlidNdPtBackgroundCuts.cxx:189 AlidNdPtBackgroundCuts.cxx:190 AlidNdPtBackgroundCuts.cxx:191 AlidNdPtBackgroundCuts.cxx:192 AlidNdPtBackgroundCuts.cxx:193 AlidNdPtBackgroundCuts.cxx:194 AlidNdPtBackgroundCuts.cxx:195 AlidNdPtBackgroundCuts.cxx:196 AlidNdPtBackgroundCuts.cxx:197 AlidNdPtBackgroundCuts.cxx:198 AlidNdPtBackgroundCuts.cxx:199 AlidNdPtBackgroundCuts.cxx:200 AlidNdPtBackgroundCuts.cxx:201 AlidNdPtBackgroundCuts.cxx:202 AlidNdPtBackgroundCuts.cxx:203 AlidNdPtBackgroundCuts.cxx:204 AlidNdPtBackgroundCuts.cxx:205 AlidNdPtBackgroundCuts.cxx:206 AlidNdPtBackgroundCuts.cxx:207 AlidNdPtBackgroundCuts.cxx:208 AlidNdPtBackgroundCuts.cxx:209 AlidNdPtBackgroundCuts.cxx:210 AlidNdPtBackgroundCuts.cxx:211 AlidNdPtBackgroundCuts.cxx:212 AlidNdPtBackgroundCuts.cxx:213 AlidNdPtBackgroundCuts.cxx:214 AlidNdPtBackgroundCuts.cxx:215 AlidNdPtBackgroundCuts.cxx:216 AlidNdPtBackgroundCuts.cxx:217 AlidNdPtBackgroundCuts.cxx:218 AlidNdPtBackgroundCuts.cxx:219 AlidNdPtBackgroundCuts.cxx:220 AlidNdPtBackgroundCuts.cxx:221 AlidNdPtBackgroundCuts.cxx:222 AlidNdPtBackgroundCuts.cxx:223 AlidNdPtBackgroundCuts.cxx:224 AlidNdPtBackgroundCuts.cxx:225