#include "AliAnalysisTaskSingleMu.h"
#endif
-AliAnalysisTaskSingleMu* AddTaskSingleMuonAnalysis(Bool_t isMC = kFALSE)
+AliAnalysisTaskSingleMu* AddTaskSingleMuonAnalysis(Bool_t isMC = kFALSE, TString changeName = "")
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
}
// Create container
- TString currName = "";
TString outputfile = mgr->GetCommonFileName();
- if ( ! outputfile.IsNull() ) outputfile += ":PWG3_SingleMu";
- else outputfile = "SingleMuAnalysis.root";
+ if ( ! outputfile.IsNull() ) outputfile += ":PWG3_SingleMu" + changeName;
+ else outputfile = "SingleMuAnalysis" + changeName + ".root";
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("SingleMuOut",TObjArray::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+ TString containerName = "SingleMuOut" + changeName;
+ AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(containerName.Data(),TObjArray::Class(),AliAnalysisManager::kOutputContainer,outputfile);
// Create cuts
- AliMuonTrackCuts* muonTrackCuts = new AliMuonTrackCuts("TestStandardMuonTrackCuts", "TestStandardMuonTrackCuts");
+ TString cutsName = "StdMuonTrackCuts" + changeName;
+ AliMuonTrackCuts* muonTrackCuts = new AliMuonTrackCuts(cutsName.Data(), cutsName.Data());
muonTrackCuts->SetIsMC(isMC);
// Create task
- AliAnalysisTaskSingleMu *singleMuAnalysisTask = new AliAnalysisTaskSingleMu("SingleMuTask", *muonTrackCuts);
+ TString taskName = "SingleMuTask" + changeName;
+ AliAnalysisTaskSingleMu *singleMuAnalysisTask = new AliAnalysisTaskSingleMu(taskName.Data(), *muonTrackCuts);
if ( isMC ) singleMuAnalysisTask->SetTrigClassPatterns("ANY");
mgr->AddTask(singleMuAnalysisTask);
((TH1*)GetMergeableObject(physSel, trigClassName, centrality, "hIpVtx"))->Fill(ipVz);
}
- Bool_t isPileupFromSPD = ( fAODEvent && ! fAODEvent->GetTracklets() ) ? InputEvent()->IsPileupFromSPD(3, 0.8, 3., 2., 5.) : InputEvent()->IsPileupFromSPDInMultBins(); // Avoid break when reading Muon AODs (tracklet info is not present and IsPileupFromSPDInMultBins crashes
- if ( isPileupFromSPD ) return;
+ // Bool_t isPileupFromSPD = ( fAODEvent && ! fAODEvent->GetTracklets() ) ? InputEvent()->IsPileupFromSPD(3, 0.8, 3., 2., 5.) : InputEvent()->IsPileupFromSPDInMultBins(); // Avoid break when reading Muon AODs (tracklet info is not present and IsPileupFromSPDInMultBins crashes // UNCOMMENT TO REJECT PILEUP
+ // if ( isPileupFromSPD ) return; // UNCOMMENT TO REJECT PILEUP
Double_t containerInput[kNvars];
AliVParticle* track = 0x0;
void MyUserCreateOutputObjects();
void ProcessEvent(TString physSel, const TObjArray& selectTrigClasses, TString centrality);
-
- private:
-
- AliAnalysisTaskSingleMu(const AliAnalysisTaskSingleMu&);
- AliAnalysisTaskSingleMu& operator=(const AliAnalysisTaskSingleMu&);
-
+
enum {
kIPVz, ///< Interaction point vertex distribution
kTrackContainer, ///< CF container for tracks
kNobjectTypes ///< Number of objects
};
-
+
enum {
kThetaAbs23, ///< Theta abs 2-3 deg
kThetaAbs310, ///< Theta abs 3-10 deg
kStepReconstructed, ///< Reconstructed tracks
kStepGeneratedMC, ///< Generated tracks (MC)
kNsteps ///< Number of steps
- };
+ };
enum {
kHvarPt, ///< Pt at vertex
kNvars ///< THnSparse dimensions
};
+ private:
+
+ AliAnalysisTaskSingleMu(const AliAnalysisTaskSingleMu&);
+ AliAnalysisTaskSingleMu& operator=(const AliAnalysisTaskSingleMu&);
+
TObjArray* fThetaAbsKeys; ///< Name of theta at absorber end
ClassDef(AliAnalysisTaskSingleMu, 3); // Single muon analysis
}
//_____________________________________________________________________________
-TObject* AliMergeableCollection::GetSum(const char* idPattern)
+TObject* AliMergeableCollection::GetSum(const char* idPattern) const
{
/// Sum objects
/// The pattern must be in the form:
static Bool_t MergeObject(TObject* baseObject, TObject* objToAdd);
- TObject* GetSum(const char* idPattern);
+ TObject* GetSum(const char* idPattern) const;
Bool_t IsEmptyObject(TObject* obj) const;
void SetWeight ( TObject* wgtObj );
TObject* GetWeight ( const char* wgtName );
+
+ enum {
+ kPhysSelPass, ///< Physics selected events
+ kPhysSelReject, ///< Events non-passing selection
+ kNselections ///< Number of selections
+ };
+
+ enum {
+ kCharmMu, ///< Mu from charm
+ kBeautyMu, ///< Mu from beauty
+ kQuarkoniumMu, ///< Mu from resonance
+ kWbosonMu, ///< Mu from W
+ kDecayMu, ///< Decay mu
+ kSecondaryMu, ///< Secondary mu
+ kRecoHadron, ///< Reconstructed hadron
+ kUnidentified, ///< Particle that fails matching kine
+ kNtrackSources ///< Total number of track sources
+ };
+
protected:
TObject* GetMergeableObject(TString physSel, TString trigClassName, TString centrality, TString objectName);
TObject* GetSum(TString physSel, TString trigClassNames, TString centrality, TString objectPattern);
- enum {
- kPhysSelPass, ///< Physics selected events
- kPhysSelReject, ///< Events non-passing selection
- kNselections ///< Number of selections
- };
-
- enum {
- kCharmMu, ///< Mu from charm
- kBeautyMu, ///< Mu from beauty
- kQuarkoniumMu, ///< Mu from resonance
- kWbosonMu, ///< Mu from W
- kDecayMu, ///< Decay mu
- kSecondaryMu, ///< Secondary mu
- kRecoHadron, ///< Reconstructed hadron
- kUnidentified, ///< Particle that fails matching kine
- kNtrackSources ///< Total number of track sources
- };
-
+
AliMuonEventCuts* fMuonEventCuts; ///< Muon event cuts
AliMuonTrackCuts* fMuonTrackCuts; ///< Muon track cuts
AliMuonPairCuts* fMuonPairCuts; ///< Muon pair track cuts