// Authors:
// Jens Wiechula <Jens.Wiechula@cern.ch>
// Frederick Kramer <Frederick.Kramer@cern.ch>
-//
+// Julian Book <Julian.Book@cern.ch>
return binLimits;
}
+//_____________________________________________________________________________
+void AliDielectronHelper::GetMaxPtAndPhi(const AliVEvent *ev, Double_t &ptMax, Double_t &phiOfptMax){
+ //
+ // find the highest pt and its phi in the event
+ //
+ for(Int_t itrk=0; itrk<ev->GetNumberOfTracks(); itrk++) {
+ AliVParticle *part= ev->GetTrack(itrk);
+ if(part && part->Pt() > ptMax) {
+ ptMax = part->Pt();
+ phiOfptMax = part->Phi();
+ }
+ }
+
+
+}
//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNch(const AliMCEvent *ev, Double_t etaRange){
if (ev->IsA() == AliAODEvent::Class()) {
AliAODTracklets *tracklets = ((AliAODEvent*)ev)->GetTracklets();
+ if (!tracklets) return -1;
nTracklets = tracklets->GetNumberOfTracklets();
for (Int_t nn = 0; nn < nTracklets; nn++) {
Double_t theta = tracklets->GetTheta(nn);
// put a robust Nacc definition here
if (!ev) return -1;
-
- AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
- varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
- varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
- varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
- varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
- varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
- varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, -0.5, 0.5); //noKinks
-
- AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
- trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
- trkCuts->SetRequireITSRefit(kTRUE);
- trkCuts->SetRequireTPCRefit(kTRUE);
+
+ AliDielectronVarCuts varCuts;
+ varCuts.AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
+ varCuts.AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
+ varCuts.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ varCuts.AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
+ varCuts.AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0);
+ varCuts.AddCut(AliDielectronVarManager::kKinkIndex0, -0.5, 0.5); //noKinks
+
+ AliDielectronTrackCuts trkCuts;
+ trkCuts.SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
+ trkCuts.SetRequireITSRefit(kTRUE);
+ trkCuts.SetRequireTPCRefit(kTRUE);
Int_t nRecoTracks = ev->GetNumberOfTracks();
Int_t nAcc = 0;
-
+
for (Int_t iTrack = 0; iTrack < nRecoTracks; iTrack++) {
- AliVParticle* candidate = ev->GetTrack(iTrack);
- if (!candidate) continue;
- AliVTrack *track = static_cast<AliVTrack*>(candidate);
+ AliVTrack *track = static_cast<AliVTrack*>(ev->GetTrack(iTrack));
if (!track) continue;
- if (varCuts->IsSelected(track) && trkCuts->IsSelected(track))
- nAcc++;
+ if (!trkCuts.IsSelected(track)) continue;
+ if (!varCuts.IsSelected(track)) continue;
+ nAcc++;
}
-
- delete varCuts;
- delete trkCuts;
return nAcc;
}
+//_____________________________________________________________________________
+Double_t AliDielectronHelper::GetITSTPCMatchEff(const AliVEvent *ev){
+ // recalulate the its-tpc matching efficiecy
+
+ if (!ev) return -1;
+
+ AliDielectronVarCuts varCutsTPC;
+ varCutsTPC.AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
+ varCutsTPC.AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
+ varCutsTPC.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ varCutsTPC.AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
+ varCutsTPC.AddCut(AliDielectronVarManager::kNclsTPC, 50.0, 160.0);
+ AliDielectronTrackCuts trkCutsTPC;
+ trkCutsTPC.SetRequireTPCRefit(kTRUE);
+
+ AliDielectronVarCuts varCutsITS;
+ varCutsITS.AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
+ AliDielectronTrackCuts trkCutsITS;
+ trkCutsITS.SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
+ trkCutsITS.SetRequireITSRefit(kTRUE);
+
+
+ Int_t nRecoTracks = ev->GetNumberOfTracks();
+ Double_t nTPC = 0, nITS = 0;
+
+ for (Int_t iTrack = 0; iTrack < nRecoTracks; iTrack++) {
+ AliVTrack *track = static_cast<AliVTrack*>(ev->GetTrack(iTrack));
+ if (!track) continue;
+
+ if(!trkCutsITS.IsSelected(track)) continue;
+ if(!varCutsITS.IsSelected(track)) continue;
+ nITS+=1.;
+
+ if(!trkCutsTPC.IsSelected(track)) continue;
+ if(!varCutsTPC.IsSelected(track)) continue;
+ nTPC+=1.;
+
+ }
+
+ // printf(" tracks TPC %.3e ITS %.3e = %.5f \n",nTPC,nITS,(nITS>0. ? nTPC/nITS : -1));
+ return (nITS>0. ? nTPC/nITS : -1);
+}
+
+
//_____________________________________________________________________________
void AliDielectronHelper::RotateKFParticle(AliKFParticle * kfParticle,Double_t angle, const AliVEvent * const ev){
// Before rotate needs to be moved to position 0,0,0, ; move back after rotation
//_____________________________________________________________________________
Int_t AliDielectronHelper::GetNMothers(const AliMCEvent *ev, Double_t etaRange, Int_t pdgMother, Int_t pdgDaughter, Int_t prim){
+ // TODO: add AODs
// counting number of mother particles generated in given eta range and 2 particle decay
if (!ev || ev->IsA()!=AliMCEvent::Class()) return -1;