- // const AliExternalTrackParam * trackIn0 = track0->GetInnerParam();
- for (Int_t itrack1=itrack0+1;itrack1<ntracks;itrack1++) {
- AliESDtrack *track1 = event->GetTrack(itrack1);
- if (!track1) continue;
- if (!track1->IsOn(AliESDtrack::kTPCrefit)) continue;
- if (track1->GetKinkIndex(0)>0) continue;
- if ((TMath::Abs(AliTracker::GetBz())>1) && (track1->Pt() < kMinPt)) continue;
- if (track1->Pt() < kMinPt) continue;
- if (track1->GetTPCncls()<kMinNcl) continue;
- if (TMath::Abs(AliTracker::GetBz())>1 && TMath::Max(track1->Pt(), track0->Pt())<kMinPtMax) continue;
- if (TMath::Abs(track1->GetY())<kMaxDelta[0]) continue;
- //track1->GetImpactParametersTPC(dcaTPC,covTPC);
- // if (TMath::Abs(dcaTPC[0])<kMaxDelta[0]) continue;
- //if (TMath::Abs(dcaTPC[1])<kMaxDelta[0]*2) continue;
- //
- const Double_t* par1=track1->GetParameter(); //track param at rhe DCA
- //
- Bool_t isPair=kTRUE;
- for (Int_t ipar=0; ipar<5; ipar++){
- if (ipar==4&&TMath::Abs(AliTracker::GetBz())<1) continue; // 1/pt not defined for B field off
- if (TMath::Abs(TMath::Abs(par0[ipar])-TMath::Abs(par1[ipar]))>kMaxDelta[ipar]) isPair=kFALSE;
- }
- if (!isPair) continue;
- if (TMath::Abs(TMath::Abs(track0->GetAlpha()-track1->GetAlpha())-TMath::Pi())>kMaxDelta[2]) isPair=kFALSE;
- //delta with correct sign
- /*
- TCut cut0="abs(t1.fP[0]+t0.fP[0])<2"
- TCut cut3="abs(t1.fP[3]+t0.fP[3])<0.02"
- TCut cut4="abs(t1.fP[4]+t0.fP[4])<0.2"
- */
- if (TMath::Abs(par0[0]+par1[0])>kMaxDelta[0]) isPair=kFALSE; //delta y opposite sign
- if (TMath::Abs(par0[3]+par1[3])>kMaxDelta[3]) isPair=kFALSE; //delta tgl opposite sign
- if (TMath::Abs(AliTracker::GetBz())>1 && TMath::Abs(par0[4]+par1[4])>kMaxDelta[4]) isPair=kFALSE; //delta 1/pt opposite sign
- if (!isPair) continue;
- TString filename(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName());
- Int_t eventNumber = event->GetEventNumberInFile();
- //Bool_t hasFriend = kFALSE;
- //Bool_t hasITS=(track0->GetNcls(0)+track1->GetNcls(0)>4);
- //printf("DUMPHPTCosmic:%s|%f|%d|%d|%d\n",filename.Data(),(TMath::Min(track0->Pt(),track1->Pt())), eventNumber,hasFriend,hasITS);
- // const AliExternalTrackParam * trackIn1 = track1->GetInnerParam();
- //
- //
- Int_t ntracksSPD = vertexSPD->GetNContributors();
- Int_t ntracksTPC = vertexTPC->GetNContributors();
- Int_t runNumber = event->GetRunNumber();
- Int_t timeStamp = event->GetTimeStamp();
- ULong64_t triggerMask = event->GetTriggerMask();
- Float_t magField = event->GetMagneticField();
- TObjString triggerClass = event->GetFiredTriggerClasses().Data();
-
- //
+ //
+ const Double_t* par1=track1->GetParameter(); //track param at rhe DCA
+ //
+ Bool_t isPair=kTRUE;
+ for (Int_t ipar=0; ipar<5; ipar++){
+ if (ipar==4&&TMath::Abs(AliTracker::GetBz())<1) continue; // 1/pt not defined for B field off
+ if (TMath::Abs(TMath::Abs(par0[ipar])-TMath::Abs(par1[ipar]))>kMaxDelta[ipar]) isPair=kFALSE;
+ }
+ if (!isPair) continue;
+ if (TMath::Abs(TMath::Abs(track0->GetAlpha()-track1->GetAlpha())-TMath::Pi())>kMaxDelta[2]) isPair=kFALSE;
+ //delta with correct sign
+ /*
+ TCut cut0="abs(t1.fP[0]+t0.fP[0])<2"
+ TCut cut3="abs(t1.fP[3]+t0.fP[3])<0.02"
+ TCut cut4="abs(t1.fP[4]+t0.fP[4])<0.2"
+ */
+ if (TMath::Abs(par0[0]+par1[0])>kMaxDelta[0]) isPair=kFALSE; //delta y opposite sign
+ if (TMath::Abs(par0[3]+par1[3])>kMaxDelta[3]) isPair=kFALSE; //delta tgl opposite sign
+ if (TMath::Abs(AliTracker::GetBz())>1 && TMath::Abs(par0[4]+par1[4])>kMaxDelta[4]) isPair=kFALSE; //delta 1/pt opposite sign
+ if (!isPair) continue;
+ TString filename(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName());
+ Int_t eventNumber = event->GetEventNumberInFile();
+ //Bool_t hasFriend = kFALSE;
+ //Bool_t hasITS=(track0->GetNcls(0)+track1->GetNcls(0)>4);
+ //printf("DUMPHPTCosmic:%s|%f|%d|%d|%d\n",filename.Data(),(TMath::Min(track0->Pt(),track1->Pt())), eventNumber,hasFriend,hasITS);
+ // const AliExternalTrackParam * trackIn1 = track1->GetInnerParam();
+ //
+ //
+ Int_t ntracksSPD = vertexSPD->GetNContributors();
+ Int_t ntracksTPC = vertexTPC->GetNContributors();
+ Int_t runNumber = event->GetRunNumber();
+ Int_t timeStamp = event->GetTimeStamp();
+ ULong64_t triggerMask = event->GetTriggerMask();
+ Float_t magField = event->GetMagneticField();
+ TObjString triggerClass = event->GetFiredTriggerClasses().Data();
+
+ // Global event id calculation using orbitID, bunchCrossingID and periodID
+ ULong64_t orbitID = (ULong64_t)event->GetOrbitNumber();
+ ULong64_t bunchCrossID = (ULong64_t)event->GetBunchCrossNumber();
+ ULong64_t periodID = (ULong64_t)event->GetPeriodNumber();
+ ULong64_t gid = ((periodID << 36) | (orbitID << 12) | bunchCrossID);
+
+ //