-/**************************************************************************
+/*************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
//
// This replicator is in charge of replicating the nuclei primary vertices
// tracks identified as nuclei with Z>=2, secondary vertices in form of
-// AliAODRecoDecayHF2Prong and their daughter tracks.
+// AliAODRecoDecayLF2Prong and their daughter tracks.
// These informations are stored into a reduced AODs (AliAOD.NuclEx.root)
//
// The vertices are filtered so that only the primary vertices make it
// to the output aods.
//
-// The secondary vertices are recreated here, as a AliAODRecoDecayHF2Prong
+// The secondary vertices are recreated here, as a AliAODRecoDecayLF2Prong
// plus cuts that select secondary vericesoutside the primary vertex
// Authors: S. Bufalino (stefania.bufalino@cern.ch)
#include "AliAODTZERO.h"
#include "AliAODTrack.h"
#include "AliAODVZERO.h"
-#include "AliAnalysisCuts.h"
+//#include "AliAnalysisCuts.h"
#include "TF1.h"
#include "AliExternalTrackParam.h"
#include "AliESDv0.h"
#include "TObjArray.h"
#include "AliAnalysisFilter.h"
#include "AliAODRecoDecay.h"
-#include "AliAODRecoDecayHF.h"
-#include "AliAODRecoDecayHF2Prong.h"
+#include "AliAODRecoDecayLF.h"
+#include "AliAODRecoDecayLF2Prong.h"
#include <TFile.h>
#include <TDatabasePDG.h>
#include "AliESDtrackCuts.h"
#include "AliAODEvent.h"
#include "AliAnalysisFilter.h"
-#include "AliAnalysisVertexingHF.h"
+//#include "AliAnalysisVertexingLF.h"
#include "AliAnalysisManager.h"
#include "AliAODNuclExReplicator.h"
#include "TH1.h"
//_____________________________________________________________________________
AliAODNuclExReplicator::AliAODNuclExReplicator(const char* name, const char* title,
- AliAnalysisCuts* trackCut,
- AliAnalysisCuts* vertexCut,
+ // AliAnalysisCuts* trackCut,
+ // AliAnalysisCuts* vertexCut,
Int_t mcMode,
Int_t nsigmaTrk1, Int_t partType1,
Int_t nsigmaTrk2, Int_t partType2
fDNmin(),
fDPmin(),
fHeader(0x0),
- fVertexCut(vertexCut), fVertices(0x0),
+//fVertexCut(vertexCut),
+ fVertices(0x0),
fNuclei(0x0),
- fTrackCut(trackCut), fSecondaryVerices(0x0),
+// fTrackCut(trackCut),
+ fSecondaryVerices(0x0),
fDaughterTracks(0x0),
fList(0x0),
fMCParticles(0x0),
AliAODNuclExReplicator::~AliAODNuclExReplicator()
{
// destructor
- delete fTrackCut;
- delete fVertexCut;
+ // delete fTrackCut;
+ // delete fVertexCut;
delete fList;
}
}
- fSecondaryVerices = new TClonesArray("AliAODRecoDecayHF2Prong",30);
+ fSecondaryVerices = new TClonesArray("AliAODRecoDecayLF2Prong",30);
fSecondaryVerices->SetName("SecondaryVertices");
fVertices = new TClonesArray("AliAODVertex",2);
//--------------------------------------------------------
- printf("Execute NuclEx Replicator\n");
+ // printf("Execute NuclEx Replicator\n");
+
+ //---------------------------------
if (fReplicateHeader)
{
fSecondaryVerices->Clear("C");
fDaughterTracks->Clear("C");
+
+ //----------------------------------
// cout<<"Centrality AOD source: "<<source.GetHeader()->GetCentrality()<<endl;
Int_t input(0);
Double_t xdummy,ydummy;
- AliAODRecoDecayHF2Prong *io2Prong = 0;
+ AliAODRecoDecayLF2Prong *io2Prong = 0;
TObjArray *twoTrackArray = new TObjArray(2);
Double_t dispersion;
//-------------------------------------------------------------
- //AliAODRecoDecayHF *rd = 0;
- AliAODRecoDecayHF2Prong*rd = 0;
+ //AliAODRecoDecayLF *rd = 0;
+ // AliAODRecoDecayLF2Prong*rd = 0;
if(vtx->GetNContributors()<1) {
}
}
- Double_t xPrimaryVertex=0.,yPrimaryVertex=0.,zPrimaryVertex=0.;
+ Double_t xPrimaryVertex=0.,yPrimaryVertex=0.;
xPrimaryVertex=vtx->GetX();
yPrimaryVertex=vtx->GetY();
- zPrimaryVertex=vtx->GetZ();
fBzkG=source.GetMagneticField();
fVertexerTracks=new AliVertexerTracks(fBzkG);
//---------------------------------------------------------------
- Double_t mom = aodtrack->GetDetPid()->GetTPCmomentum();
+ // Double_t mom = aodtrack->GetDetPid()->GetTPCmomentum();
+ Double_t mom = aodtrack->P();
if(mom<0.150)continue;
-
+
+
+
Double_t nSigmaNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(aodtrack,(AliPID::EParticleType)fpartType1));
// cout<<"%%% nsigma Pi: "<<nSigmaNegPion<<endl;
// Double_t nSigmaNegPion = TMath::Abs((aodtrack->GetTPCsignal() - foPion->Eval(mom))/foPion->Eval(mom))/0.07;
//cout<<"%%% nsigma Nuclei: "<<nSigmaNuclei<<endl;
if(nSigmaNuclei>-fnSigmaTrk2 && aodtrack->GetTPCsignal()<1000 && mom>0.2){
-
- //Double_t triggerDeDx = 4*AliExternalTrackParam::BetheBlochAleph((mom*2)/(0.938*3),1.0288,31.9806,5.04114e-11,2.13096,2.38541);
+
+ //Double_t triggerDeDx = 4*AliExternalTrackParam::BetheBlochAleph((mom*2)/(0.938*3),1.0288,31.9806,5.04114e-11,2.13096,2.38541);
//if(aodtrack->GetTPCsignal() > triggerDeDx && aodtrack->GetTPCsignal()<5000 && mom>0.2 /*&& aodtrack->Charge()==1*/){
Track1[nTrack1++]=j;
// cout<<"if CPA \npr0: "<<io2Prong->GetProngID(0)<<" pr1: "<<io2Prong->GetProngID(1)<<" pr2"<<io2Prong->GetProngID(2)<<endl;
// cout<<"pointing angle "<<io2Prong->CosPointingAngle()<<endl;
- rd = new((*fSecondaryVerices)[nsv++]) AliAODRecoDecayHF2Prong(*io2Prong);
-
- cout<<"QUELLO CHE SALVo \npr0: "<<rd->GetProngID(0)<<" pr1: "<<rd->GetProngID(1)<<" pr2"<<rd->GetProngID(2)<<endl;
+
+ // AliAODTrack *trk0 = (AliAODTrack*)io2Prong->GetDaughter(0);
+ // AliAODTrack *trk1 = (AliAODTrack*)io2Prong->GetDaughter(1);
+
+ // cout<<"**********************************************"<<endl;
+ // cout<<trk0/*->GetID()*/<<" "<<negtrackAOD->GetID()<<endl;
+ // cout<<trk1/*->GetID()*/<<" "<<postrackAOD->GetID()<<endl;
+ // cout<<"d0 io2Prong: "<<io2Prong->GetProngID(1)<<endl;
+ // cout<<"d1 io2Prong: "<<io2Prong->GetProngID(0)<<endl;
+ // cout<<"**********************************************"<<endl;
+
+ // rd = new((*fSecondaryVerices)[nsv++]) AliAODRecoDecayLF2Prong(*io2Prong);
+
+ new((*fSecondaryVerices)[nsv++]) AliAODRecoDecayLF2Prong(*io2Prong);
+
+ // cout<<"QUELLO CHE SALVo \npr0: "<<rd->GetProngID(0)<<" pr1: "<<rd->GetProngID(1)<<" pr2"<<rd->GetProngID(2)<<endl;
// rd->SetSecondaryVtx(vertexp1n1);
// vertexp1n1->SetParent(rd);
}
//----------------------------------------------------------
-
+
assert(fVertices!=0x0);
fVertices->Clear("C");
TIter nextV(source.GetVertices());
while ( ( v = static_cast<AliAODVertex*>(nextV()) ) )
{
- if ( !fVertexCut || fVertexCut->IsSelected(v) )
- {
+ if ( v->GetType() == AliAODVertex::kPrimary ||
+ v->GetType() == AliAODVertex::kMainSPD ||
+ v->GetType() == AliAODVertex::kPileupSPD ||
+ v->GetType() == AliAODVertex::kPileupTracks||
+ v->GetType() == AliAODVertex::kMainTPC )
+ {
AliAODVertex* tmp = v->CloneWithoutRefs();
AliAODVertex* copiedVertex = new((*fVertices)[nvertices++]) AliAODVertex(*tmp);
}
}
- printf("....Done NuclEx Replicator...\n");
+ // printf("....Done NuclEx Replicator...\n");
AliDebug(1,Form("input mu tracks=%d tracks=%d vertices=%d nnuclei=%d",
input,fSecondaryVerices->GetEntries(),fVertices->GetEntries(),fNuclei->GetEntries()));
if(fV1) { delete fV1; fV1=NULL; }
//cout<<"Delete 5"<< endl;
if(fAODMap) { delete [] fAODMap; fAODMap=NULL; }
- delete indices;
+ delete []indices;
//cout<<"Delete 6"<< endl;
delete fVertexerTracks;
//-----------------------------------------------------------------------------
-AliAODRecoDecayHF2Prong* AliAODNuclExReplicator::Make2Prong(TObjArray *twoTrackArray,const AliAODEvent &evento,
+AliAODRecoDecayLF2Prong* AliAODNuclExReplicator::Make2Prong(TObjArray *twoTrackArray,const AliAODEvent &evento,
AliAODVertex *secVert,Double_t dca)
charge[0]=1; //it was -1 //Ramona
charge[1]=2;
- // From AliAnalysisVertexingHF.cxx Method:Make2Prongs
+ // From AliAnalysisVertexingLF.cxx Method:Make2Prongs
fBzkG = evento.GetMagneticField();
Double_t d0z0[2],covd0z0[3];
+ d0z0[0] = -999.;
+ d0z0[1] = -999.;
+ covd0z0[0] = -999.;
+ covd0z0[1] = -999.;
+ covd0z0[2] = -999.;
+
d0[0] = d0z0[0];
d0err[0] = TMath::Sqrt(TMath::Abs(covd0z0[0]));
d0[1] = d0z0[0];
d0err[1] = TMath::Sqrt(TMath::Abs(covd0z0[0]));
- // create the object AliAODRecoDecayHF2Prong
- // AliAODRecoDecayHF2Prong *the2Prong = new AliAODRecoDecayHF2Prong(secVert,px,py,pz,d0,d0err,dcap1n1);
- AliAODRecoDecayHF2Prong *the2Prong = new AliAODRecoDecayHF2Prong(secVert,px,py,pz,d0,d0err,dca);
+ // create the object AliAODRecoDecayLF2Prong
+ // AliAODRecoDecayLF2Prong *the2Prong = new AliAODRecoDecayLF2Prong(secVert,px,py,pz,d0,d0err,dcap1n1);
+ AliAODRecoDecayLF2Prong *the2Prong = new AliAODRecoDecayLF2Prong(secVert,px,py,pz,d0,d0err,dca);
the2Prong->SetOwnPrimaryVtx(primVertexAOD);
// the2Prong->SetProngIDs(2,{-999,999});
}
//----------------------------------------------------------------------------
-void AliAODNuclExReplicator::AddRefs(AliAODVertex *v,AliAODRecoDecayHF *rd,
+void AliAODNuclExReplicator::AddRefs(AliAODVertex *v,AliAODRecoDecayLF *rd,
const AliAODEvent &event,
const TObjArray *trkArray) const