fQACollection->CreateTH1F("nElectron", "Number of electrons", 100, 0, 100);
fQACollection->CreateTH2F("radius", "Production Vertex", 100, 0.0, 5.0, 100, 0.0, 5.0);
fQACollection->CreateTH1F("nTriggerBit", "Histo Trigger Bit", 22, 0, 22);
+ fQACollection->CreateTH1F("Filterbegin", "AOD filter of tracks after all cuts", 21, -1, 20);
fQACollection->CreateTH1F("Filterend", "AOD filter of tracks after all cuts", 21, -1, 20);
InitHistoITScluster();
AliError("AOD Event required for AOD Analysis");
return;
}
+
+ // Tag all v0s in current event
+ if(fV0Tagger){
+ fV0Tagger->Reset();
+ fV0Tagger->TagV0Tracks(fAOD);
+ }
+ // Set magnetic field if V0 task on
+ if(fTaggedTrackAnalysis) {
+ fTaggedTrackAnalysis->SetMagneticField(fAOD->GetMagneticField());
+ fTaggedTrackAnalysis->SetCentrality(fCentralityF);
+ if(IsPbPb()) fTaggedTrackAnalysis->SetPbPb();
+ else {
+ if(IspPb()) fTaggedTrackAnalysis->SetpPb();
+ else fTaggedTrackAnalysis->SetPP();
+ }
+ }
//printf("Will fill\n");
//
for(Int_t itrack = 0; itrack < fAOD->GetNumberOfTracks(); itrack++){
track = fAOD->GetTrack(itrack); mctrack = NULL;
if(!track) continue;
+
+ // fill counts of v0-identified particles
+ AliPID::EParticleType v0pid = fV0Tagger->GetV0Info(track->GetID());
+ // here the tagged track analysis will run
+ if(fTaggedTrackAnalysis && v0pid != AliPID::kUnknown){
+ AliDebug(1, Form("Track identified as %s", AliPID::ParticleName(v0pid)));
+ fTaggedTrackAnalysis->ProcessTrack(track, v0pid);
+ AliDebug(1, "V0 PID done");
+ }
signal = kTRUE;
if(HasMCData()){
}
}
+ // begin AOD QA
+ fQACollection->Fill("Filterbegin", -1);
+ for(Int_t k=0; k<20; k++) {
+ Int_t u = 1<<k;
+ if((track->TestFilterBit(u))) {
+ fQACollection->Fill("Filterbegin", k);
+ }
+ }
+
if(fApplyCutAOD) {
//printf("Apply cuts\n");
// RecKine: ITSTPC cuts
if(!fPassTheEventCut) return kFALSE;
fVarManager->FillContainer(fContainer, "MCTrackCont", AliHFEcuts::kStepMCGeneratedEventCut, kFALSE);
- if(!fCFM->CheckParticleCuts(AliHFEcuts::kStepMCInAcceptance, track)) return kFALSE;
- fVarManager->FillContainer(fContainer, "MCTrackCont", AliHFEcuts::kStepMCInAcceptance, kFALSE);
+ if(IsESDanalysis()){
+ if(!fCFM->CheckParticleCuts(AliHFEcuts::kStepMCInAcceptance, track)) return kFALSE;
+ fVarManager->FillContainer(fContainer, "MCTrackCont", AliHFEcuts::kStepMCInAcceptance, kFALSE);
+ }
return kTRUE;
}
#include "AliLog.h"
+#include "AliAODEvent.h"
+#include "AliAODv0.h"
#include "AliESDEvent.h"
#include "AliESDv0.h"
TNamed(),
fIsAODana(NULL),
fTaggedTracks(NULL),
- fV0finder(NULL)
+ fV0finder(NULL),
+ fAODV0finder(NULL)
{
//
// default constructor
TNamed(name, ""),
fIsAODana(kFALSE),
fTaggedTracks(NULL),
- fV0finder(NULL)
+ fV0finder(NULL),
+ fAODV0finder(NULL)
{
//
// constructor
fTaggedTracks->SetOwner();
}
fV0finder = new AliESDv0KineCuts();
+ fAODV0finder = new AliAODv0KineCuts();
}
//__________________________________________________________________
TNamed(ref),
fIsAODana(ref.fIsAODana),
fTaggedTracks(NULL),
- fV0finder(ref.fV0finder)
+ fV0finder(ref.fV0finder),
+ fAODV0finder(ref.fAODV0finder)
{
//
// Copy constructor
fTaggedTracks->Add(new AliHFEV0tag(tmp->GetTrackID(),tmp->GetPinfo()));
}
fV0finder=ref.fV0finder;
+ fAODV0finder=ref.fAODV0finder;
return *this;
}
//___________________________________________________________________
//________________________________________________________________________________
// loops over V0s in event and fills fTaggedTracks with V0 tracks
-void AliHFEV0taginfo::TagV0Tracks(AliESDEvent *fEvent){
+void AliHFEV0taginfo::TagV0Tracks(AliVEvent *fEvent){
if (!fEvent) return;
const Int_t nV0s = fEvent->GetNumberOfV0s();
if(nV0s < 1) return;
AliDebug(3,Form("%d V0s found!",nV0s));
-
- fV0finder->SetEvent(fEvent);
-
- for(Int_t i=0; i<nV0s; ++i){
- Int_t pdgP = 0;
- Int_t pdgN = 0;
- AliESDv0 *fV0 = fEvent->GetV0(i);
- if(!fV0) continue;
- if(fV0finder->ProcessV0(fV0,pdgP,pdgN)){
- AliDebug(5,Form("V0 has: pos pdg: %d, neg pdg: %d",pdgP,pdgN));
- AddTrack(fV0->GetPindex(),pdgP);
- AddTrack(fV0->GetNindex(),pdgN);
+
+ if(fEvent->IsA() == AliESDEvent::Class()){
+ AliDebug(4, "ESD part");
+ AliESDEvent *esdevent = static_cast<AliESDEvent *>(fEvent);
+ fV0finder->SetEvent(esdevent);
+
+ for(Int_t i=0; i<nV0s; ++i){
+ Int_t pdgP = 0;
+ Int_t pdgN = 0;
+ AliESDv0 *fV0 = esdevent->GetV0(i);
+ if(!fV0) continue;
+ if(fV0finder->ProcessV0(fV0,pdgP,pdgN)){
+ AliDebug(5,Form("V0 has: pos pdg: %d, neg pdg: %d",pdgP,pdgN));
+ AddTrack(fV0->GetPindex(),pdgP);
+ AddTrack(fV0->GetNindex(),pdgN);
+ }
+ }
+ } else if(fEvent->IsA() == AliAODEvent::Class()){
+ AliDebug(4,"AOD part");
+ AliAODEvent *aodevent = static_cast<AliAODEvent *>(fEvent);
+ fAODV0finder->SetEvent(aodevent);
+
+ for(Int_t i=0; i<nV0s; ++i){
+ Int_t pdgP = 0;
+ Int_t pdgN = 0;
+ AliAODv0 *fV0 = aodevent->GetV0(i);
+ if(!fV0) continue;
+ if(fAODV0finder->ProcessV0(fV0,pdgP,pdgN)){
+ AliDebug(5,Form("V0 has: pos pdg: %d, neg pdg: %d",pdgP,pdgN));
+ AddTrack(fV0->GetPosID(),pdgP);
+ AddTrack(fV0->GetNegID(),pdgN);
+ }
}
}
}
#include "AliPID.h"
#include "AliESDv0KineCuts.h"
+#include "AliAODv0KineCuts.h"
+
+class AliVEvent;
class AliHFEV0taginfo: public TNamed{
virtual ~AliHFEV0taginfo();
void Reset(); //resets the fTaggedTracks TList
- void TagV0Tracks(AliESDEvent *event); // loops over V0s in event and fills fTaggedTracks with V0 tracks
+ void TagV0Tracks(AliVEvent *event); // loops over V0s in event and fills fTaggedTracks with V0 tracks
AliPID::EParticleType GetV0Info(Int_t trackID); //check for V0 information from track ID
void SetIsAODana() { fIsAODana = kTRUE; } // Setter AOD analysis
void SetIsESDana() { fIsAODana = kFALSE; } // Setter ESD analysis
Bool_t fIsAODana;
TList *fTaggedTracks;
AliESDv0KineCuts *fV0finder;
+ AliAODv0KineCuts *fAODV0finder;
ClassDef(AliHFEV0taginfo,1)
};
const AliExternalTrackParam *trueparam = NULL;
if(esdtrackc->GetOuterParam()) {
- trueparam = esdtrackc->GetOuterParam();
- fVarManager->NewTrack((AliVParticle *)trueparam, NULL, fCentralityF, abinitioPID, kTRUE);
+ trueparam = esdtrackc->GetOuterParam();
+ fVarManager->NewTrack((AliVParticle *)trueparam, NULL, fCentralityF, abinitioPID, kTRUE);
}
else return;
}
AliDebug(2, "Use track in the PID");
// Apply PID
AliHFEpidObject hfetrack;
- hfetrack.SetAnalysisType(AliHFEpidObject::kESDanalysis);
+ if(track->IsA() == AliESDtrack::Class())
+ hfetrack.SetAnalysisType(AliHFEpidObject::kESDanalysis);
+ else
+ hfetrack.SetAnalysisType(AliHFEpidObject::kAODanalysis);
hfetrack.SetRecTrack(track);
hfetrack.SetAbInitioPID(abinitioPID);
hfetrack.SetCentrality(fCentralityF);
if(fIsPbPb) hfetrack.SetPbPb();
- else
- {
- if(fIspPb) hfetrack.SetpPb();
- else hfetrack.SetPP();
+ else{
+ if(fIspPb) hfetrack.SetpPb();
+ else hfetrack.SetPP();
}
fPID->SetVarManager(fVarManager);
fPID->IsSelected(&hfetrack, fContainer, "taggedTrackContainer", fPIDqa);
// HFE task configuration PID2 (TOF-TPC only!)
//
- Bool_t kAnalyseTaggedTracks = isAOD ? kFALSE : kTRUE;
+ Bool_t kAnalyseTaggedTracks = kTRUE;
Int_t iDCAxy = (Int_t)(DCAxy*10.);
Int_t iDCAz = (Int_t)(DCAz*10.);
// HFE task configuration PID2 (TOF-TPC-TRD)
//
// AliLog::SetClassDebugLevel("AliHFEpidTRD", 10);
- Bool_t kAnalyseTaggedTracks = isAOD ? kFALSE : kTRUE;
+ Bool_t kAnalyseTaggedTracks = kTRUE;
// TRD settings
Double_t *assTPCSminus=NULL, Double_t *assTPCSplus=NULL,
Bool_t useCat1Tracks = kTRUE, Bool_t useCat2Tracks = kTRUE)
{
- Bool_t kAnalyseTaggedTracks = isAOD ? kFALSE : kTRUE;
+ Bool_t kAnalyseTaggedTracks = kTRUE;
//***************************************//
// Setting up the HFE cuts //
Int_t itshitpixel = 0, Int_t icent=1,
Double_t etami=-0.8, Double_t etama=0.8){
- Bool_t kAnalyseTaggedTracks = isAOD ? kFALSE : kTRUE;
+ Bool_t kAnalyseTaggedTracks = kTRUE;
//***************************************//
// Setting up the HFE cuts //
Int_t TRDtrigger=1, Int_t TRDtl=6, Int_t TRDeff=4,
TString detector){
- Bool_t kAnalyseTaggedTracks = isAOD ? kFALSE : kTRUE;
+ Bool_t kAnalyseTaggedTracks = kTRUE;
// TRD settings
Float_t eeff[6] = {0.7, 0.75, 0.8, 0.85, 0.9, 0.95};