compilation warning fix
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Jul 2010 04:19:59 +0000 (04:19 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Jul 2010 04:19:59 +0000 (04:19 +0000)
PWG4/JetCorrel/AliJetCorrelReader.cxx

index f7989ba..1acc2b2 100644 (file)
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-/* $Id: $ */
-
-//__________________________________________________________________________
-// Class for input (ESD or AOD) reading.
-// At the moment only ESD input is really implemented, AOD to be added later.
-// Its products are the Trigger&Associated particle lists
-//-- Author: Paul Constantin
-
-#include "AliJetCorrelReader.h"
-
-using namespace std;
-
-ClassImp(AliJetCorrelReader)
-
-AliJetCorrelReader::AliJetCorrelReader() :
-  fjcESD(NULL), fSelector(NULL), fWriter(NULL){
-  // constructor
-}
-
-AliJetCorrelReader::~AliJetCorrelReader(){
-  // destructor
-}
-
-void AliJetCorrelReader::Init(AliJetCorrelSelector * const s, AliJetCorrelWriter * const w){
-  // initialization method
-  fSelector = s;
-  fWriter = w;
-}
-
-Float_t AliJetCorrelReader::GetMultiplicity() const {
-  // event multiplicity
-  if(!fjcESD){
-    std::cerr<<"AliJetCorrelReader::GetVertex() - ERROR : fjcESD not set!"<<std::endl; 
-    exit(-1);
-  }
-  // return fjcESD->GetNumberOfTracks(); // ESD no of global tracks
-  const AliMultiplicity* m = fjcESD->GetMultiplicity(); // SPD no of tracklets
-  return m->GetNumberOfTracklets();
-}
-
-Float_t AliJetCorrelReader::GetVertex() const {
-  // event vertex
-  if(!fjcESD){
-    std::cerr<<"AliJetCorrelReader::GetVertex() - ERROR : fjcESD not set!"<<std::endl; 
-    exit(-1);
-  }
-  return fjcESD->GetPrimaryVertex()->GetZ();
-}
-
-Bool_t AliJetCorrelReader::VtxOutPipe() const {
-  // returns true if vertex R >= beam pipe
-  Float_t xVtx2 = fjcESD->GetPrimaryVertex()->GetX()*fjcESD->GetPrimaryVertex()->GetX();
-  Float_t yVtx2 = fjcESD->GetPrimaryVertex()->GetY()*fjcESD->GetPrimaryVertex()->GetY();
-  if(TMath::Sqrt(xVtx2+yVtx2)>3) return kTRUE;
-  return kFALSE;
-}
-
-void AliJetCorrelReader::FillLists(CorrelList_t *trigList, CorrelList_t *assoList){
-  // fills the trigger&associated particle lists, in this order!
-  cPartType_t trigType = trigList->PartID();
-  cPartType_t assoType = assoList->PartID();
-  Bool_t filledTrig = trigList->Filled();
-  Bool_t filledAsso = assoList->Filled();
-  // when needed, fill both lists simultaneously for speed:
-  if(!filledTrig && !filledAsso && trigType==assoType){
-    switch(trigType){
-    case t_hadron:
-      FillESDTrackLists(trigList,assoList); // trigger list first!
-      break;
-    default:
-      std::cerr<<"AliJetCorrelReader::FillLists() - ERROR: type not implemented!"<<std::endl;
-      exit(-1);
-    }
-    trigList->SetFilled(kTRUE);
-    assoList->SetFilled(kTRUE);
-  } else {
-    if(!filledTrig){
-      FillList(trigList,kTRUE);
-      trigList->SetFilled(kTRUE);
-    }
-    if(!filledAsso){
-      FillList(assoList,kFALSE);
-      assoList->SetFilled(kTRUE);
-    }
-  }
-}
-
-void AliJetCorrelReader::FillList(CorrelList_t *list, Bool_t isTrigg){
-  // calls the appropriate Fill method for the list's particle type
-  cPartType_t partType = list->PartID();
-  switch(partType){
-  case t_hadron:
-    FillESDTrackList(list,isTrigg);
-    break;
-  case t_electron: 
-    FillESDTrackList(list,isTrigg);
-    break;
-  case t_dielectron:
-    FillESDDielectronList(list,isTrigg);
-    break;
-  case t_photon:
-    FillESDPhotonList(list,isTrigg);
-    break;
-  case t_diphoton:
-    FillESDDiphotonList(list,isTrigg);
-    break;
-  default:
-    std::cerr<<"AliJetCorrelReader::FillList() - ERROR: type not implemented!"<<std::endl;
-    exit(-1);
-  }
-}
-
-void AliJetCorrelReader::FillESDTrackLists(CorrelList_t *trigList, CorrelList_t *assoList){
-  // fills trigg&assoc lists simultaneously with ESD tracks
-  cPartType_t partType = trigList->PartID(); // by definition the two lists store same particle
-
-  UInt_t nTracks = fjcESD->GetNumberOfTracks() ;
-  if(nTracks<1) return;
-  for(register UInt_t i=0; i<nTracks; i++){
-    AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i);
-
-    Float_t pT = track->Pt();
-    if(pT<fSelector->MinLowBin(t_asso)) continue;
-    if(fSelector->GenQA()) fWriter->FillTrackQA(track,0);
-    if(fSelector->LowQualityTrack(track)) continue;
-    if(!fSelector->PassPID(track,partType)) continue;
-    if(fSelector->GenQA()) fWriter->FillTrackQA(track,1);
-
-    // fill CorrelList_t object with CorrelTrack_t if two-track cuts (TPC entrance) are used and
-    // with CorrelParticle_t if not (base particle uses much less memory). Pair (ghost) cuts need
-    // to be applied for both real/mixed pairs, but it's not clear yet whether this is necessary.
-//     CorrelTrack_t *hadr = new CorrelTrack_t; // if uncommenting these 3 lines, comment out next line
-//     const AliExternalTrackParam* tpcEntry = track->GetInnerParam();
-//     hadr->SetTPCEntry(tpcEntry->GetX(),tpcEntry->GetY(),tpcEntry->GetZ());
-    CorrelParticle_t *hadr = new CorrelParticle_t;
-    hadr->SetPt(pT*track->Charge());
-    hadr->SetPhi(track->Phi());
-    hadr->SetEta(track->Eta());
-    hadr->SetMass(track->GetMass());
-    hadr->SetID(partType);
-
-    if(fSelector->GetBin(t_trig,pT)>=0) trigList->Push(hadr->Copy());
-    if(fSelector->GetBin(t_asso,pT)>=0) assoList->Push(hadr->Copy());
-    delete hadr;
-  } // ESD track loop
-}
-
-void AliJetCorrelReader::FillESDTrackList(CorrelList_t *list, Bool_t isTrigg){
-  // this method is called for: (1) associated hadrons, when trigger is not hadron;
-  // (2) electrons to be used in dielectron reconstruction. Assoc pT cuts apply then...
-  if(isTrigg)
-    {std::cerr<<"AliJetCorrelReader::FillESDTrackList - ERROR: not meant for triggers!"<<std::endl; exit(-1);}
-  cPartType_t partType = list->PartID();
-
-  UInt_t nTracks = fjcESD->GetNumberOfTracks();
-  if(nTracks<1) return;
-  for(register UInt_t i=0; i<nTracks; i++){
-    AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i);
-
-    Float_t pT = track->Pt();
-    if(pT<fSelector->MinLowBin(t_asso)) continue; 
-    if(fSelector->GenQA()) fWriter->FillTrackQA(track,0);
-    if(fSelector->LowQualityTrack(track)) continue;
-    if(fSelector->GenQA()) fWriter->FillTrackQA(track,1);
-    if(!fSelector->PassPID(track,partType)) continue;
-    
-    // fill CorrelList_t object with CorrelKFTrack_t if AliKFParticle is used for di-electrons and 
-    // with CorrelParticle_t if this is done via TLorentzVector in CorrelRecoParent_t (less memory).
-    // AliKFParticle allows for a vertex cut on the reconstructed di-electron
-    if(partType==t_electron && fSelector->UseAliKF()){
-      CorrelKFTrack_t *elec = new CorrelKFTrack_t;
-      const AliExternalTrackParam* tPar = track->GetConstrainedParam();
-      elec->SetParam(tPar->GetParameter());
-      elec->SetCovar(tPar->GetCovariance());
-      elec->SetPt(pT*track->Charge());
-      elec->SetPhi(track->Phi());
-      elec->SetEta(track->Eta());
-      elec->SetMass(track->GetMass());
-      elec->SetID(partType);
-      list->Push(elec);
-    } else {
-      CorrelParticle_t *hadr = new CorrelParticle_t;
-      hadr->SetPt(pT*track->Charge());
-      hadr->SetPhi(track->Phi());
-      hadr->SetEta(track->Eta());
-      hadr->SetMass(track->GetMass());
-      hadr->SetID(partType);
-      list->Push(hadr);
-    }   
-  }
-}
-
-void AliJetCorrelReader::FillESDPhotonList(CorrelList_t *list, Bool_t isTrigg){
-  // TBI
-  std::cerr<<"WARNING : FillESDPhotonList() not emplemented yet. Doing nothing..."<<std::endl;
-  std::cerr<<"Photon list size:"<<list->Size()<<std::endl;
-}
-
-void AliJetCorrelReader::FillESDDiphotonList(CorrelList_t* list, Bool_t isTrigg){
-  // makes a diphoton list (see above warning!)
-  CorrelList_t *fPhotonList = new CorrelList_t;
-  fPhotonList->Label(t_photon,0); // event number unimportant here
-  FillESDPhotonList(fPhotonList, isTrigg);
-  FillParentList(list, fPhotonList, isTrigg);
-  fWriter->FillParentNtuple(list);
-  delete fPhotonList;
-}
-
-void AliJetCorrelReader::FillESDDielectronList(CorrelList_t* list, Bool_t isTrigg){
-  // makes a dielectron list
-  CorrelList_t *fElectronList = new CorrelList_t;
-  fElectronList->Label(t_electron,0); // event number unimportant here
-  FillESDTrackList(fElectronList, isTrigg);
-  FillParentList(list, fElectronList, isTrigg);
-  fWriter->FillParentNtuple(list);
-  delete fElectronList;
-}
-
-void AliJetCorrelReader::FillParentList(CorrelList_t *ParentList, CorrelList_t *ChildList, Bool_t isTrigg){
-  // makes a list of parent particles from a list of children of same type
-  if(ChildList->Size()<2) return;
-
-  CorrelListIter_t iterChild1, iterChild2;
-  iterChild1 = ChildList->Head();
-  while(!iterChild1.HasEnded()){
-    CorrelParticle_t *child1 = iterChild1.Data(); iterChild1.Move();
-    iterChild2 = iterChild1;
-    while(!iterChild2.HasEnded()){
-      CorrelParticle_t *child2 = iterChild2.Data(); iterChild2.Move();
-      CorrelRecoParent_t *parent = new CorrelRecoParent_t;
-      parent->SetEvent(fjcESD);
-      Bool_t goodParent = parent->Reconstruct(child1, child2, fSelector->UseAliKF());
-      Bool_t inPtRange = (!isTrigg && fSelector->GetBin(t_asso,parent->Pt())>=0) ||
-       (isTrigg && fSelector->GetBin(t_trig,parent->Pt())>=0);
-      if(goodParent && inPtRange) ParentList->Push(parent);
-    } // 2nd particle loop
-  } // 1st particle loop
-}
+/**************************************************************************\r
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
+ *                                                                        *\r
+ * Author: The ALICE Off-line Project.                                    *\r
+ * Contributors are mentioned in the code where appropriate.              *\r
+ *                                                                        *\r
+ * Permission to use, copy, modify and distribute this software and its   *\r
+ * documentation strictly for non-commercial purposes is hereby granted   *\r
+ * without fee, provided that the above copyright notice appears in all   *\r
+ * copies and that both the copyright notice and this permission notice   *\r
+ * appear in the supporting documentation. The authors make no claims     *\r
+ * about the suitability of this software for any purpose. It is          *\r
+ * provided "as is" without express or implied warranty.                  *\r
+ **************************************************************************/\r
+/* $Id: $ */\r
+\r
+//__________________________________________________________________________\r
+// Class for input (ESD or AOD) reading.\r
+// At the moment only ESD input is really implemented, AOD to be added later.\r
+// Its products are the Trigger&Associated particle lists\r
+//-- Author: Paul Constantin\r
+\r
+#include "AliJetCorrelReader.h"\r
+\r
+using namespace std;\r
+\r
+ClassImp(AliJetCorrelReader)\r
+\r
+AliJetCorrelReader::AliJetCorrelReader() :\r
+  fjcESD(NULL), fSelector(NULL), fWriter(NULL){\r
+  // constructor\r
+}\r
+\r
+AliJetCorrelReader::~AliJetCorrelReader(){\r
+  // destructor\r
+}\r
+\r
+void AliJetCorrelReader::Init(AliJetCorrelSelector * const s, AliJetCorrelWriter * const w){\r
+  // initialization method\r
+  fSelector = s;\r
+  fWriter = w;\r
+}\r
+\r
+Float_t AliJetCorrelReader::GetMultiplicity() const {\r
+  // event multiplicity\r
+  if(!fjcESD){\r
+    std::cerr<<"AliJetCorrelReader::GetVertex() - ERROR : fjcESD not set!"<<std::endl; \r
+    exit(-1);\r
+  }\r
+  // return fjcESD->GetNumberOfTracks(); // ESD no of global tracks\r
+  const AliMultiplicity* m = fjcESD->GetMultiplicity(); // SPD no of tracklets\r
+  return m->GetNumberOfTracklets();\r
+}\r
+\r
+Float_t AliJetCorrelReader::GetVertex() const {\r
+  // event vertex\r
+  if(!fjcESD){\r
+    std::cerr<<"AliJetCorrelReader::GetVertex() - ERROR : fjcESD not set!"<<std::endl; \r
+    exit(-1);\r
+  }\r
+  return fjcESD->GetPrimaryVertex()->GetZ();\r
+}\r
+\r
+Bool_t AliJetCorrelReader::VtxOutPipe() const {\r
+  // returns true if vertex R >= beam pipe\r
+  Float_t xVtx2 = fjcESD->GetPrimaryVertex()->GetX()*fjcESD->GetPrimaryVertex()->GetX();\r
+  Float_t yVtx2 = fjcESD->GetPrimaryVertex()->GetY()*fjcESD->GetPrimaryVertex()->GetY();\r
+  if(TMath::Sqrt(xVtx2+yVtx2)>3) return kTRUE;\r
+  return kFALSE;\r
+}\r
+\r
+void AliJetCorrelReader::FillLists(CorrelList_t *trigList, CorrelList_t *assoList){\r
+  // fills the trigger&associated particle lists, in this order!\r
+  cPartType_t trigType = trigList->PartID();\r
+  cPartType_t assoType = assoList->PartID();\r
+  Bool_t filledTrig = trigList->Filled();\r
+  Bool_t filledAsso = assoList->Filled();\r
+  // when needed, fill both lists simultaneously for speed:\r
+  if(!filledTrig && !filledAsso && trigType==assoType){\r
+    switch(trigType){\r
+    case t_hadron:\r
+      FillESDTrackLists(trigList,assoList); // trigger list first!\r
+      break;\r
+    default:\r
+      std::cerr<<"AliJetCorrelReader::FillLists() - ERROR: type not implemented!"<<std::endl;\r
+      exit(-1);\r
+    }\r
+    trigList->SetFilled(kTRUE);\r
+    assoList->SetFilled(kTRUE);\r
+  } else {\r
+    if(!filledTrig){\r
+      FillList(trigList,kTRUE);\r
+      trigList->SetFilled(kTRUE);\r
+    }\r
+    if(!filledAsso){\r
+      FillList(assoList,kFALSE);\r
+      assoList->SetFilled(kTRUE);\r
+    }\r
+  }\r
+}\r
+\r
+void AliJetCorrelReader::FillList(CorrelList_t *list, Bool_t isTrigg){\r
+  // calls the appropriate Fill method for the list's particle type\r
+  cPartType_t partType = list->PartID();\r
+  switch(partType){\r
+  case t_hadron:\r
+    FillESDTrackList(list,isTrigg);\r
+    break;\r
+  case t_electron: \r
+    FillESDTrackList(list,isTrigg);\r
+    break;\r
+  case t_dielectron:\r
+    FillESDDielectronList(list,isTrigg);\r
+    break;\r
+  case t_photon:\r
+    FillESDPhotonList(list,isTrigg);\r
+    break;\r
+  case t_diphoton:\r
+    FillESDDiphotonList(list,isTrigg);\r
+    break;\r
+  default:\r
+    std::cerr<<"AliJetCorrelReader::FillList() - ERROR: type not implemented!"<<std::endl;\r
+    exit(-1);\r
+  }\r
+}\r
+\r
+void AliJetCorrelReader::FillESDTrackLists(CorrelList_t *trigList, CorrelList_t *assoList){\r
+  // fills trigg&assoc lists simultaneously with ESD tracks\r
+  cPartType_t partType = trigList->PartID(); // by definition the two lists store same particle\r
+\r
+  UInt_t nTracks = fjcESD->GetNumberOfTracks() ;\r
+  if(nTracks<1) return;\r
+  for(register UInt_t i=0; i<nTracks; i++){\r
+    AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i);\r
+\r
+    Float_t pT = track->Pt();\r
+    if(pT<fSelector->MinLowBin(t_asso)) continue;\r
+    if(fSelector->GenQA()) fWriter->FillTrackQA(track,0);\r
+    if(fSelector->LowQualityTrack(track)) continue;\r
+    if(!fSelector->PassPID(track,partType)) continue;\r
+    if(fSelector->GenQA()) fWriter->FillTrackQA(track,1);\r
+\r
+    // fill CorrelList_t object with CorrelTrack_t if two-track cuts (TPC entrance) are used and\r
+    // with CorrelParticle_t if not (base particle uses much less memory). Pair (ghost) cuts need\r
+    // to be applied for both real/mixed pairs, but it's not clear yet whether this is necessary.\r
+//     CorrelTrack_t *hadr = new CorrelTrack_t; // if uncommenting these 3 lines, comment out next line\r
+//     const AliExternalTrackParam* tpcEntry = track->GetInnerParam();\r
+//     hadr->SetTPCEntry(tpcEntry->GetX(),tpcEntry->GetY(),tpcEntry->GetZ());\r
+    CorrelParticle_t *hadr = new CorrelParticle_t;\r
+    hadr->SetPt(pT*track->Charge());\r
+    hadr->SetPhi(track->Phi());\r
+    hadr->SetEta(track->Eta());\r
+    hadr->SetMass(track->GetMass());\r
+    hadr->SetID(partType);\r
+\r
+    if(fSelector->GetBin(t_trig,pT)>=0) trigList->Push(hadr->Copy());\r
+    if(fSelector->GetBin(t_asso,pT)>=0) assoList->Push(hadr->Copy());\r
+    delete hadr;\r
+  } // ESD track loop\r
+}\r
+\r
+void AliJetCorrelReader::FillESDTrackList(CorrelList_t *list, Bool_t isTrigg){\r
+  // this method is called for: (1) associated hadrons, when trigger is not hadron;\r
+  // (2) electrons to be used in dielectron reconstruction. Assoc pT cuts apply then...\r
+  if(isTrigg)\r
+    {std::cerr<<"AliJetCorrelReader::FillESDTrackList - ERROR: not meant for triggers!"<<std::endl; exit(-1);}\r
+  cPartType_t partType = list->PartID();\r
+\r
+  UInt_t nTracks = fjcESD->GetNumberOfTracks();\r
+  if(nTracks<1) return;\r
+  for(register UInt_t i=0; i<nTracks; i++){\r
+    AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i);\r
+\r
+    Float_t pT = track->Pt();\r
+    if(pT<fSelector->MinLowBin(t_asso)) continue; \r
+    if(fSelector->GenQA()) fWriter->FillTrackQA(track,0);\r
+    if(fSelector->LowQualityTrack(track)) continue;\r
+    if(fSelector->GenQA()) fWriter->FillTrackQA(track,1);\r
+    if(!fSelector->PassPID(track,partType)) continue;\r
+    \r
+    // fill CorrelList_t object with CorrelKFTrack_t if AliKFParticle is used for di-electrons and \r
+    // with CorrelParticle_t if this is done via TLorentzVector in CorrelRecoParent_t (less memory).\r
+    // AliKFParticle allows for a vertex cut on the reconstructed di-electron\r
+    if(partType==t_electron && fSelector->UseAliKF()){\r
+      CorrelKFTrack_t *elec = new CorrelKFTrack_t;\r
+      const AliExternalTrackParam* tPar = track->GetConstrainedParam();\r
+      elec->SetParam(tPar->GetParameter());\r
+      elec->SetCovar(tPar->GetCovariance());\r
+      elec->SetPt(pT*track->Charge());\r
+      elec->SetPhi(track->Phi());\r
+      elec->SetEta(track->Eta());\r
+      elec->SetMass(track->GetMass());\r
+      elec->SetID(partType);\r
+      list->Push(elec);\r
+    } else {\r
+      CorrelParticle_t *hadr = new CorrelParticle_t;\r
+      hadr->SetPt(pT*track->Charge());\r
+      hadr->SetPhi(track->Phi());\r
+      hadr->SetEta(track->Eta());\r
+      hadr->SetMass(track->GetMass());\r
+      hadr->SetID(partType);\r
+      list->Push(hadr);\r
+    }   \r
+  }\r
+}\r
+\r
+void AliJetCorrelReader::FillESDPhotonList(CorrelList_t *list, Bool_t isTrigg){\r
+  // TBI\r
+  std::cerr<<"WARNING : FillESDPhotonList() not emplemented yet. Doing nothing..."<<std::endl;\r
+  std::cerr<<"Photon list size:"<<list->Size()<<" type:"<<isTrigg<<std::endl;\r
+}\r
+\r
+void AliJetCorrelReader::FillESDDiphotonList(CorrelList_t* list, Bool_t isTrigg){\r
+  // makes a diphoton list (see above warning!)\r
+  CorrelList_t *fPhotonList = new CorrelList_t;\r
+  fPhotonList->Label(t_photon,0); // event number unimportant here\r
+  FillESDPhotonList(fPhotonList, isTrigg);\r
+  FillParentList(list, fPhotonList, isTrigg);\r
+  fWriter->FillParentNtuple(list);\r
+  delete fPhotonList;\r
+}\r
+\r
+void AliJetCorrelReader::FillESDDielectronList(CorrelList_t* list, Bool_t isTrigg){\r
+  // makes a dielectron list\r
+  CorrelList_t *fElectronList = new CorrelList_t;\r
+  fElectronList->Label(t_electron,0); // event number unimportant here\r
+  FillESDTrackList(fElectronList, isTrigg);\r
+  FillParentList(list, fElectronList, isTrigg);\r
+  fWriter->FillParentNtuple(list);\r
+  delete fElectronList;\r
+}\r
+\r
+void AliJetCorrelReader::FillParentList(CorrelList_t *ParentList, CorrelList_t *ChildList, Bool_t isTrigg){\r
+  // makes a list of parent particles from a list of children of same type\r
+  if(ChildList->Size()<2) return;\r
+\r
+  CorrelListIter_t iterChild1, iterChild2;\r
+  iterChild1 = ChildList->Head();\r
+  while(!iterChild1.HasEnded()){\r
+    CorrelParticle_t *child1 = iterChild1.Data(); iterChild1.Move();\r
+    iterChild2 = iterChild1;\r
+    while(!iterChild2.HasEnded()){\r
+      CorrelParticle_t *child2 = iterChild2.Data(); iterChild2.Move();\r
+      CorrelRecoParent_t *parent = new CorrelRecoParent_t;\r
+      parent->SetEvent(fjcESD);\r
+      Bool_t goodParent = parent->Reconstruct(child1, child2, fSelector->UseAliKF());\r
+      Bool_t inPtRange = (!isTrigg && fSelector->GetBin(t_asso,parent->Pt())>=0) ||\r
+       (isTrigg && fSelector->GetBin(t_trig,parent->Pt())>=0);\r
+      if(goodParent && inPtRange) ParentList->Push(parent);\r
+    } // 2nd particle loop\r
+  } // 1st particle loop\r
+}\r