using std::cout;
using std::endl;
ClassImp(AliAnalysisTaskESDNuclExFilter)
-ClassImp(AliAnalysisNonMuonTrackCuts)
+//ClassImp(AliAnalysisNonMuonTrackCuts)
////////////////////////////////////////////////////////////////////////
-AliAnalysisNonMuonTrackCuts::AliAnalysisNonMuonTrackCuts()
-{
- // default ctor
-}
+// AliAnalysisNonMuonTrackCuts::AliAnalysisNonMuonTrackCuts()
+// {
+// // default ctor
+// }
-Bool_t AliAnalysisNonMuonTrackCuts::IsSelected(TObject* obj)
-{
- // Returns true if the object is a muon track
- AliAODTrack* track = dynamic_cast<AliAODTrack*>(obj);
+// Bool_t AliAnalysisNonMuonTrackCuts::IsSelected(TObject* obj)
+// {
+// // Returns true if the object is a muon track
+// AliAODTrack* track = dynamic_cast<AliAODTrack*>(obj);
- ULong_t status;
+// ULong_t status;
- if(track){
+// if(track){
- status = (ULong_t)track->GetStatus();
-
- if(track->GetTPCNcls() > 80 &&
- track->Chi2perNDF() < 5 &&
- track->IsOn(AliAODTrack::kTPCrefit) &&
- track->IsOn(AliAODTrack::kTPCin) &&
- !track->IsOn(AliAODTrack::kITSpureSA))
- {
- return kTRUE;
- }
- }
+// status = (ULong_t)track->GetStatus();
+
+// if(track->GetTPCNcls() > 80 &&
+// track->Chi2perNDF() < 5 &&
+// track->IsOn(AliAODTrack::kTPCrefit) &&
+// track->IsOn(AliAODTrack::kTPCin) &&
+// !track->IsOn(AliAODTrack::kITSpureSA))
+// {
+// return kTRUE;
+// }
+// }
- else
- return kFALSE;
+// else
+// return kFALSE;
-}
+// }
-AliAnalysisNonPrimaryVertices::AliAnalysisNonPrimaryVertices()
-{
- // default ctor
-}
+// AliAnalysisNonPrimaryVertices::AliAnalysisNonPrimaryVertices()
+// {
+// // default ctor
+// }
-Bool_t AliAnalysisNonPrimaryVertices::IsSelected(TObject* obj)
-{
- // Returns true if the object is a primary vertex
+// Bool_t AliAnalysisNonPrimaryVertices::IsSelected(TObject* obj)
+// {
+// // Returns true if the object is a primary vertex
- AliAODVertex* vertex = dynamic_cast<AliAODVertex*>(obj);
- if (vertex)
- {
- if ( vertex->GetType() == AliAODVertex::kPrimary ||
- vertex->GetType() == AliAODVertex::kMainSPD ||
- vertex->GetType() == AliAODVertex::kPileupSPD ||
- vertex->GetType() == AliAODVertex::kPileupTracks||
- vertex->GetType() == AliAODVertex::kMainTPC )
- {
- return kTRUE;
- }
- }
+// AliAODVertex* vertex = dynamic_cast<AliAODVertex*>(obj);
+// if (vertex)
+// {
+// if ( vertex->GetType() == AliAODVertex::kPrimary ||
+// vertex->GetType() == AliAODVertex::kMainSPD ||
+// vertex->GetType() == AliAODVertex::kPileupSPD ||
+// vertex->GetType() == AliAODVertex::kPileupTracks||
+// vertex->GetType() == AliAODVertex::kMainTPC )
+// {
+// return kTRUE;
+// }
+// }
- // enum AODVtx_t {kUndef=-1, kPrimary, kKink, kV0, kCascade, kMulti, kMainSPD, kPileupSPD, kPileupTracks,kMainTPC};
+// // enum AODVtx_t {kUndef=-1, kPrimary, kKink, kV0, kCascade, kMulti, kMainSPD, kPileupSPD, kPileupTracks,kMainTPC};
- return kFALSE;
+// return kFALSE;
-}
+// }
+//-----------------------------------------------------------------------------------
AliAnalysisTaskESDNuclExFilter::AliAnalysisTaskESDNuclExFilter(Bool_t onlyMuon, Bool_t keepAllEvents, Int_t mcMode, Int_t nsigmaTrk1,Int_t nsigmaTrk2, Int_t partType1,Int_t partType2):
AliAnalysisTaskSE(),
fnSigmaTrk2(nsigmaTrk2),
fpartType1(partType1),
fpartType2(partType2),
+ murep(0x0),
fPIDResponse(0)
{
// Default constructor
fnSigmaTrk2(nsigmaTrk2),
fpartType1(partType1),
fpartType2(partType2),
- murep(0),
+ murep(0x0),
fPIDResponse(0)
{
// Constructor
}
//______________________________________________________________________________
-void AliAnalysisTaskESDNuclExFilter::AddFilteredAOD(const char* aodfilename, const char* title)
+void AliAnalysisTaskESDNuclExFilter::AddFilteredAOD(const char* aodfilename, const char* title, Bool_t toMerge)
{
//cout<<"Entro ne ADDFILTETEDAOD"<<endl;
AliAODHandler *aodH = (AliAODHandler*)((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (!aodH) Fatal("UserCreateOutputObjects", "No AOD handler");
- //cout<<"Add Filterd AOD "<<aodH->AddFilteredAOD(aodfilename,title)<<endl;
- AliAODExtension* ext = aodH->AddFilteredAOD(aodfilename,title);
- //cout<<"Handle inside add filterAOD: "<<aodH<<endl;
- //cout<<"########### ext: "<<ext<<endl;
-
- if (!ext) return;
-
- //cout<<"ONLY MUON?? "<<fOnlyMuon<<endl;
-
- if ( fOnlyMuon )
- {
-
- //cout<<"Inside fonly muon: "<<endl;
-
-
- if(!murep)delete murep;
- murep = new AliAODNuclExReplicator("NuclExReplicator",
- "remove non interesting tracks",
- new AliAnalysisNonMuonTrackCuts,
- new AliAnalysisNonPrimaryVertices,
- fMCMode,fnSigmaTrk1,fnSigmaTrk2,fpartType1,fpartType2);
-
- //cout<<"murep: "<<murep<<endl;
-
- ext->DropUnspecifiedBranches(); // all branches not part of a FilterBranch call (below) will be dropped
-
- // ext->FilterBranch("header",murep);
- // ext->FilterBranch("tracks",murep);
- // ext->FilterBranch("vertices",murep);
- // ext->FilterBranch("dimuons",murep); //per test
- // ext->FilterBranch("AliAODVZERO",murep);
- // ext->FilterBranch("AliAODTZERO",murep);
-
- ext->FilterBranch("header",murep);
- ext->FilterBranch("vertices",murep);
- ext->FilterBranch("nuclei",murep);
- ext->FilterBranch("secvertices",murep); //per test
- ext->FilterBranch("daughtertracks",murep);
+ if(aodH){
- //cout<<"add filterd aod"<<endl;
-
- if ( fMCMode > 0 )
- {
- // MC branches will be copied (if present), as they are, but only
- // for events with at least one muon.
- // For events w/o muon, mcparticles array will be empty and mcheader will be dummy
- // (e.g. strlen(GetGeneratorName())==0)
-
- ext->FilterBranch("mcparticles",murep);
- ext->FilterBranch("mcHeader",murep);
- }
- }
-
+ //cout<<"Add Filterd AOD "<<aodH->AddFilteredAOD(aodfilename,title)<<endl;
+ AliAODExtension* ext = aodH->AddFilteredAOD(aodfilename,title,toMerge);
+ //cout<<"Handle inside add filterAOD: "<<aodH<<endl;
+ //cout<<"########### ext: "<<ext<<endl;
+
+ if (!ext) return;
+
+ //cout<<"ONLY MUON?? "<<fOnlyMuon<<endl;
+
+ if ( fOnlyMuon )
+ {
+
+ //cout<<"Inside fonly muon: "<<endl;
+
+
+ if(!murep)delete murep;
+
+ murep = new AliAODNuclExReplicator("NuclExReplicator",
+ "remove non interesting tracks",
+ // new AliAnalysisNonMuonTrackCuts,
+ // new AliAnalysisNonPrimaryVertices,
+ fMCMode,fnSigmaTrk1,fnSigmaTrk2,fpartType1,fpartType2);
+
+ //cout<<"murep: "<<murep<<endl;
+
+ ext->DropUnspecifiedBranches(); // all branches not part of a FilterBranch call (below) will be dropped
+
+ // ext->FilterBranch("header",murep);
+ // ext->FilterBranch("tracks",murep);
+ // ext->FilterBranch("vertices",murep);
+ // ext->FilterBranch("dimuons",murep); //per test
+ // ext->FilterBranch("AliAODVZERO",murep);
+ // ext->FilterBranch("AliAODTZERO",murep);
+
+ ext->FilterBranch("header",murep);
+ ext->FilterBranch("vertices",murep);
+ ext->FilterBranch("nuclei",murep);
+ ext->FilterBranch("secvertices",murep); //per test
+ ext->FilterBranch("daughtertracks",murep);
+
+ //cout<<"add filterd aod"<<endl;
+
+ if ( fMCMode > 0 )
+ {
+ // MC branches will be copied (if present), as they are, but only
+ // for events with at least one muon.
+ // For events w/o muon, mcparticles array will be empty and mcheader will be dummy
+ // (e.g. strlen(GetGeneratorName())==0)
+
+ ext->FilterBranch("mcparticles",murep);
+ ext->FilterBranch("mcHeader",murep);
+ }
+ }
+
+ }
//cout<<"fine add filterd"<<endl;
}
//cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sono in INIT"<<endl;
// Initialization
if(fEnableMuonAOD)
- AddFilteredAOD("AliAOD.NuclEx.root", "MuonEvents");
+ AddFilteredAOD("AliAOD.NuclEx.root", "NuclexFilteredEvents",kTRUE);
//cout<<"Fine INIT"<<endl;
// if(fEnableDimuonAOD) AddFilteredAOD("AliAOD.Dimuons.root", "DimuonEvents");
}
//cout<<"========================> CONVERT ESD TO AOD <============================="<<endl;
- AliVEvent *event = InputEvent();
- //cout<<"VEvent: "<<event<<endl;
AliAODEvent *lAODevent=(AliAODEvent*)InputEvent();
- //cout<<"AOD Event: "<<event<<endl;
- AliAODHeader* header =lAODevent->GetHeader();
- //cout<<"header :"<<header<<endl;
- Int_t jTracks = lAODevent->GetNumberOfTracks();
- //cout<<"n jtracks :"<<jTracks<<endl;
// Read primary vertex from AOD event
// AliAODVertex *primary = *(AODEvent()->GetPrimaryVertex());
if ( extNuclEx ) {
// extNuclEx->Init("");
- extNuclEx->SetEvent(lAODevent);
- extNuclEx->SelectEvent();
- extNuclEx->Print();
- extNuclEx->FinishEvent();
+
+ // extNuclEx->GetAOD()->GetHeader()->ResetEventplanePointer();
+ // extNuclEx->GetTree()->Fill(); // fill header for all events without tracks
+
+ extNuclEx->SetEvent(lAODevent);
+ extNuclEx->SelectEvent();
+ // extNuclEx->IsFilteredAOD();
+ // extNuclEx->Print();
+ extNuclEx->FinishEvent();
//cout<<"extMuons? "<<extMuons<<endl;