From: loizides Date: Mon, 18 Mar 2013 13:55:54 +0000 (+0000) Subject: had corr qa task from Rosi X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=6d9675aef38ee5b0943238d0932729cbd2ca5333;p=u%2Fmrichter%2FAliRoot.git had corr qa task from Rosi --- diff --git a/PWGJE/CMakelibPWGJEEMCALJetTasks.pkg b/PWGJE/CMakelibPWGJEEMCALJetTasks.pkg index 5ac452b1cb0..4944378669e 100644 --- a/PWGJE/CMakelibPWGJEEMCALJetTasks.pkg +++ b/PWGJE/CMakelibPWGJEEMCALJetTasks.pkg @@ -26,38 +26,39 @@ #--------------------------------------------------------------------------------# set ( SRCS + EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx EMCALJetTasks/AliAnalysisTaskEmcalJet.cxx EMCALJetTasks/AliAnalysisTaskEmcalJetSample.cxx - EMCALJetTasks/AliAnalysisTaskRhoBase.cxx EMCALJetTasks/AliAnalysisTaskRho.cxx - EMCALJetTasks/AliAnalysisTaskRhoFlow.cxx EMCALJetTasks/AliAnalysisTaskRhoAverage.cxx - EMCALJetTasks/AliAnalysisTaskDeltaPt.cxx + EMCALJetTasks/AliAnalysisTaskRhoBase.cxx + EMCALJetTasks/AliAnalysisTaskRhoFlow.cxx EMCALJetTasks/AliAnalysisTaskScale.cxx EMCALJetTasks/AliEmcalJet.cxx EMCALJetTasks/AliEmcalJetTask.cxx EMCALJetTasks/AliHadCorrTask.cxx - EMCALJetTasks/AliJetEmbeddingTask.cxx - EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx + EMCALJetTasks/AliJetConstituentTagCopier.cxx EMCALJetTasks/AliJetEmbeddingFromAODTask.cxx + EMCALJetTasks/AliJetEmbeddingFromGenTask.cxx EMCALJetTasks/AliJetEmbeddingFromPYTHIATask.cxx + EMCALJetTasks/AliJetEmbeddingTask.cxx EMCALJetTasks/AliJetModelBaseTask.cxx EMCALJetTasks/AliJetRandomizerTask.cxx - EMCALJetTasks/AliJetConstituentTagCopier.cxx EMCALJetTasks/AliJetResponseMaker.cxx EMCALJetTasks/AliRhoParameter.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx EMCALJetTasks/UserTasks/AliAnalysisTaskCLQA.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskSOH.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskFullppJet.cxx EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.cxx - EMCALJetTasks/UserTasks/AliAnalysisTaskFullpAJets.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHMEC.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectraMECpA.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskFullpAJets.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskFullppJet.cxx EMCALJetTasks/UserTasks/AliAnalysisTaskQualityAssurancePA.cxx EMCALJetTasks/UserTasks/AliAnalysisTaskRhoVnModulation.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskSAJF.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskSAQA.cxx + EMCALJetTasks/UserTasks/AliAnalysisTaskSOH.cxx ) set ( DHDR PWGJEEMCALJetTasksLinkDef.h) diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.h b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.h index a7a1f7ccd12..2001a8d75ed 100644 --- a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.h +++ b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskChargedJetsPA.h @@ -8,6 +8,7 @@ class TH2F; class TList; class TClonesArray; class TString; +class TRandom3; class AliEmcalJet; class AliRhoParameter; class AliVParticle; diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx new file mode 100644 index 00000000000..a75dec85b00 --- /dev/null +++ b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.cxx @@ -0,0 +1,316 @@ +#include "AliAnalysisTaskEmcalJetHadCorQA.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "AliAODEvent.h" +#include "AliAnalysisManager.h" +#include "AliAnalysisTask.h" +#include "AliCentrality.h" +#include "AliESDEvent.h" +#include "AliESDInputHandler.h" +#include "AliEmcalJet.h" +#include "AliVCluster.h" +#include "AliVTrack.h" +#include "AliRhoParameter.h" +#include "AliEmcalParticle.h" +#include "AliPicoTrack.h" +#include "AliEMCALGeometry.h" + +ClassImp(AliAnalysisTaskEmcalJetHadCorQA) + +//________________________________________________________________________ +AliAnalysisTaskEmcalJetHadCorQA::AliAnalysisTaskEmcalJetHadCorQA() : + AliAnalysisTaskEmcalJet("spectra",kFALSE), + fCalo2Name(), + fCaloClusters2(), + fHistRhovsCent(0), + fHistNjetvsCent(0) +{ + for (int i = 0;i<3;i++){ + fHistNEFvsPt[i] = 0; + fHistNTMatchvsPt[i] = 0; + fHistNCMatchvsPt[i] = 0; + fHistHadCorvsPt[i] = 0; + fHistNEFvsPtBias[i] = 0; + fHistNTMatchvsPtBias[i] = 0; + fHistNCMatchvsPtBias[i] = 0; + fHistHadCorvsPtBias[i] = 0; + } + // Default constructor. + + SetMakeGeneralHistograms(kTRUE); +} + +//________________________________________________________________________ +AliAnalysisTaskEmcalJetHadCorQA::AliAnalysisTaskEmcalJetHadCorQA(const char *name) : + AliAnalysisTaskEmcalJet(name,kTRUE), + fCalo2Name(), + fCaloClusters2(), + fHistRhovsCent(0), + fHistNjetvsCent(0) + { + for (int i = 0;i<3;i++){ + fHistNEFvsPt[i] = 0; + fHistNTMatchvsPt[i] = 0; + fHistNCMatchvsPt[i] = 0; + fHistHadCorvsPt[i] = 0; + fHistNEFvsPtBias[i] = 0; + fHistNTMatchvsPtBias[i] = 0; + fHistNCMatchvsPtBias[i] = 0; + fHistHadCorvsPtBias[i] = 0; + } + SetMakeGeneralHistograms(kTRUE); + } + +//________________________________________________________________________ +void AliAnalysisTaskEmcalJetHadCorQA::UserCreateOutputObjects() +{ + if (! fCreateHisto) + return; + AliAnalysisTaskEmcalJet::UserCreateOutputObjects(); + fHistRhovsCent = new TH2F("RhovsCent", "RhovsCent", 100, 0.0, 100.0, 500, 0, 500); + fHistNjetvsCent = new TH2F("NjetvsCent", "NjetvsCent", 100, 0.0, 100.0, 100, 0, 100); + + for (int i = 0;i<3;i++){ + char name[200]; + TString title; + sprintf(name,"NEFvsPt%i",i); + fHistNEFvsPt[i] = new TH2F(name, name, 100,0,1,500,-250,250); + fOutput->Add(fHistNEFvsPt[i]); + sprintf(name,"NTMatchvsPt%i",i); + fHistNTMatchvsPt[i] = new TH2F(name, name, 100,0,100,500,-250,250); + fOutput->Add(fHistNTMatchvsPt[i]); + sprintf(name,"NCMatchvsPt%i",i); + fHistNCMatchvsPt[i] = new TH2F(name, name, 100,0,100,500,-250,250); + fOutput->Add(fHistNCMatchvsPt[i]); + sprintf(name,"HadCorvsPt%i",i); + fHistHadCorvsPt[i] = new TH2F(name, name, 1000,0,500,500,-250,250); + fOutput->Add(fHistHadCorvsPt[i]); + sprintf(name,"NEFvsPtBias%i",i); + fHistNEFvsPtBias[i] = new TH2F(name, name, 100,0,1,500,-250,250); + fOutput->Add(fHistNEFvsPtBias[i]); + sprintf(name,"NTMatchvsPtBias%i",i); + fHistNTMatchvsPtBias[i] = new TH2F(name, name, 100,0,100,500,-250,250); + fOutput->Add(fHistNTMatchvsPtBias[i]); + sprintf(name,"NCMatchvsPtBias%i",i); + fHistNCMatchvsPtBias[i] = new TH2F(name, name, 100,0,100,500,-250,250); + fOutput->Add(fHistNCMatchvsPtBias[i]); + sprintf(name,"HadCorvsPtBias%i",i); + fHistHadCorvsPtBias[i] = new TH2F(name, name, 1000,0,500,500,-250,250); + fOutput->Add(fHistHadCorvsPtBias[i]); + } + fHistNTMatchvsPtvsNtack0 = new TH3F("NTMmatchvsPtvsNtrack0", "NTMatchsvsPtvsNtrack0", 100,0,100,500,-250,250,250,0,2500); + + // for (Int_t i = 0;i<6;++i){ + // name = TString(Form("JetPtvsTrackPt_%i",i)); + // title = TString(Form("Jet pT vs Leading Track pT cent bin %i",i)); + // fHistJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100); + // fOutput->Add(fHistJetPtvsTrackPt[i]); + + // } + fOutput->Add(fHistRhovsCent); + fOutput->Add(fHistNjetvsCent); + fOutput->Add(fHistNTMatchvsPtvsNtack0); + PostData(1, fOutput); +} + +//________________________________________________________________________ + +Int_t AliAnalysisTaskEmcalJetHadCorQA::GetCentBin(Double_t cent) const +{ + // Get centrality bin. + + Int_t centbin = -1; + if (cent>=0 && cent<10) + centbin = 0; + else if (cent>=10 && cent<30) + centbin = 1; + else if (cent>=30 && cent<50) + centbin = 2; + else if (cent>50) + centbin =3; + return centbin; +} + +//________________________________________________________________________ + +Float_t AliAnalysisTaskEmcalJetHadCorQA:: RelativePhi(Double_t mphi,Double_t vphi) const +{ + if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi()); + else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi()); + if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi()); + else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi()); + double dphi = mphi-vphi; + if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi()); + else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi()); + + return dphi;//dphi in [-Pi, Pi] +} + +//________________________________________________________________________ +void AliAnalysisTaskEmcalJetHadCorQA::ExecOnce(){ + AliAnalysisTaskEmcalJet::ExecOnce(); + +// AliAnalysisManger *am = AliAnalysisManager::GetAnalysisManger(); +// if (fCaloName == "CaloClusters") +// am->LoadBranch("CaloClusters"); + + if (!fCalo2Name.IsNull() && !fCaloClusters2){ + fCaloClusters2 = dynamic_cast(InputEvent()->FindListObject(fCalo2Name)); + if (!fCaloClusters2){ + AliError(Form("%s: Could not retrieve calo clusters %s!",GetName(),fCalo2Name.Data())); + fInitialized = kFALSE; + return; + } + // fCaloClusters2(), + // else if (!fJets->GetClass()->GetBaseClass("AliVCluster")){ +// AliError(Form("%s: Collection %s does not contain AliEmcalParticle objects!",GetName(),fCalo2Name.Data())); +// fCaloClusters2 = 0; +// fInitialized = kFALSE; +// return; + // } + } +} + + +//________________________________________________________________________ +Bool_t AliAnalysisTaskEmcalJetHadCorQA::Run() +{ + Int_t centbin = GetCentBin(fCent); + //for pp analyses we will just use the first centrality bin + if (centbin == -1) + centbin = 0; + if (centbin>2) + return kTRUE; + if (!fTracks) + return kTRUE; + + const Int_t nCluster = fCaloClusters->GetEntriesFast(); + const Int_t nCluster2 = fCaloClusters2->GetEntriesFast(); + const Int_t nTrack = fTracks->GetEntriesFast(); + + TString fRhoScaledName = fRhoName; + fRho = GetRhoFromEvent(fRhoScaledName); + fRhoVal = fRho->GetVal(); + fHistRhovsCent->Fill(fCent,fRhoVal); + const Int_t Njets = fJets->GetEntriesFast(); + + Int_t NjetAcc = 0; + + + for (Int_t iJets = 0; iJets < Njets; ++iJets) { + Int_t TrackMatch = 0; + AliEmcalJet *jet = static_cast(fJets->At(iJets)); + if (!jet) + continue; + if (jet->Area()==0) + continue; + if (jet->Pt()<0.1) + continue; + if (jet->MaxTrackPt()>100) + continue; + if (! AcceptJet(jet)) + continue; + NjetAcc++; + vector cluster_id; //we need to keep track of the jet clusters that we find + vector cluster_id2; + Double_t Esub = 0; //total E subtracted from the jet + Double_t jetPt = -500; + jetPt = jet->Pt()-jet->Area()*fRhoVal; + for (int i = 0;i(fTracks->At(i)); + if (!emctrack) + continue; + if (!emctrack->IsEMCAL()) + continue; + AliVTrack *track = (AliVTrack*)emctrack->GetTrack(); + if (! track) + continue; + if (! AcceptTrack(track)) + continue; + if (! IsJetTrack(jet,i,false)) + continue; + Int_t iClus = track->GetEMCALcluster(); + if (iClus<0) + continue; + bool ischecked = false; + for (Int_t icid = 0;i(fCaloClusters->At(iClus)); + AliVCluster *cluster = emcluster->GetCluster(); + if (! cluster) + continue; + if (! AcceptCluster(cluster)) + continue; + Double_t etadiff = 999; + Double_t phidiff = 999; + AliPicoTrack::GetEtaPhiDiff(track,cluster,phidiff,etadiff); + if (! (TMath::Abs(phidiff)< 0.025&&TMath::Abs(etadiff)<0.015)) + continue; + TrackMatch++; //this cluster has been matched, let's add it to the list + cluster_id.push_back(iClus); + Int_t ismatch = -1; + //now we need to find its matched corrected cluster if any + for (Int_t ic = 0;ic < nCluster2;ic++){ + //we don't need to check the list of corrected clusters because 1 to 1 between corrected and uncorrected + AliVCluster *emcluster2 = static_cast(fCaloClusters2->At(ic)); + if (! emcluster2) + continue; + if (! AcceptCluster(emcluster2)) + continue; + if (! IsJetCluster(jet,ic,false)) + continue; + TLorentzVector nPart; + cluster->GetMomentum(nPart,const_cast(fVertex)); + TLorentzVector nPart2; + emcluster2->GetMomentum(nPart2,const_cast(fVertex)); + float R = pow(pow(nPart.Eta()-nPart2.Eta(),2)+pow(nPart.Phi()-nPart2.Phi(),2),0.5); + if (R < 0.001){//this cluster stayed in the jet! + cluster_id2.push_back(ic); + ismatch = ic; + } + } // end of cluster2 loop + //we only get here if the track was matched to a cluster that hadn't been looked at before + if (ismatch < 0) //this cluster was entirely deleted + Esub+=cluster->E(); + else{ //get the corrected cluster + AliVCluster *emcluster2temp = static_cast(fCaloClusters2->At(ismatch)); + Esub+=(cluster->E() - emcluster2temp->E()); + } + + } // end of track loop + fHistNEFvsPt[centbin]->Fill(jet->NEF(),jetPt); + fHistNTMatchvsPt[centbin]->Fill(TrackMatch,jetPt); + // fHistNCMatchvsPtvsCent(0), + fHistHadCorvsPt[centbin]->Fill(Esub,jetPt); + if (jet->MaxTrackPt()<5.0) + continue; + fHistNEFvsPtBias[centbin]->Fill(jet->NEF(),jetPt); + fHistNTMatchvsPtBias[centbin]->Fill(TrackMatch,jetPt); + fHistHadCorvsPtBias[centbin]->Fill(Esub,jetPt); + if (centbin == 0) + fHistNTMatchvsPtvsNtack0->Fill(TrackMatch,jetPt,nTrack); + } + fHistNjetvsCent->Fill(fCent,NjetAcc); + return kTRUE; +} + + + + + diff --git a/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h new file mode 100644 index 00000000000..9aa935412ee --- /dev/null +++ b/PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadCorQA.h @@ -0,0 +1,48 @@ +#ifndef AliAnalysisTaskEmcalJetHadCorQA_h +#define AliAnalysisTaskEmcalJetHadCorQA_h + +class TH1F; +class TH2F; +class TH3F; +class THnSparse; + +#include "AliAnalysisTaskEmcalJet.h" + +class AliAnalysisTaskEmcalJetHadCorQA : public AliAnalysisTaskEmcalJet { + public: + AliAnalysisTaskEmcalJetHadCorQA(); + AliAnalysisTaskEmcalJetHadCorQA(const char *name); + virtual ~AliAnalysisTaskEmcalJetHadCorQA() {} + + + virtual void UserCreateOutputObjects(); + void SetCalo2Name(const char *n) {fCalo2Name = n;} + + protected: + Bool_t Run(); + void ExecOnce(); + virtual Int_t GetCentBin(Double_t cent) const; + Float_t RelativePhi(Double_t mphi,Double_t vphi) const; + + private: + TString fCalo2Name; + TClonesArray *fCaloClusters2; + TH2F *fHistRhovsCent; //!rho vs cent + TH2F *fHistNjetvsCent; //!number of jets versus Centrality + TH2F *fHistNEFvsPt[3]; //! + TH2F *fHistNTMatchvsPt[3]; //! + TH2F *fHistNCMatchvsPt[3]; //! + TH2F *fHistHadCorvsPt[3]; //! + TH2F *fHistNEFvsPtBias[3]; //! + TH2F *fHistNTMatchvsPtBias[3]; //! + TH2F *fHistNCMatchvsPtBias[3]; //! + TH2F *fHistHadCorvsPtBias[3]; //! + TH3F *fHistNTMatchvsPtvsNtack0; //! + + + AliAnalysisTaskEmcalJetHadCorQA(const AliAnalysisTaskEmcalJetHadCorQA&); // not implemented + AliAnalysisTaskEmcalJetHadCorQA& operator=(const AliAnalysisTaskEmcalJetHadCorQA&); // not implemented + + ClassDef(AliAnalysisTaskEmcalJetHadCorQA, 1); // Emcal jet spectra task +}; +#endif diff --git a/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C b/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C new file mode 100644 index 00000000000..38cd7aa9e90 --- /dev/null +++ b/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadCorQA.C @@ -0,0 +1,67 @@ + + +AliAnalysisTaskEmcalJetHadCorQA* AddTaskEmcalJetHadCorQA( + const char *outfilename = "AnalysisOutput.root", + const char *nJets = "Jets", + UInt_t type = AliAnalysisTaskEmcal::kTPC, + const char *nRhosChEm = "rhoChEm", + const Double_t minPhi = 1.8, + const Double_t maxPhi = 2.74, + const Double_t minEta = -0.3, + const Double_t maxEta = 0.3, + const Double_t minArea = 0.4, + const char *nTracks = "PicoTracks", + const char *nClusters = "CaloClusters", + const char *nClustersCorr = "CaloClusters" +) +{ + // Get the pointer to the existing analysis manager via the static access method. + //============================================================================== + AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); + if (!mgr) + { + ::Error("AddTaskEmcalJetHadCorQA", "No analysis manager to connect to."); + return NULL; + } + + // Check the analysis type using the event handlers connected to the analysis manager. + //============================================================================== + if (!mgr->GetInputEventHandler()) + { + ::Error("AddTaskEmcalJetHadCorQA", "This task requires an input event handler"); + return NULL; + } + + //------------------------------------------------------- + // Init the task and do settings + //------------------------------------------------------- + + TString name(Form("JetHadCor_%s", nJets)); + AliAnalysisTaskEmcalJetHadCorQA *jethadcortask = new AliAnalysisTaskEmcalJetHadCorQA(name); + jethadcortask->SetJetsName(nJets); + jethadcortask->SetAnaType(type); + jethadcortask->SetRhoName(nRhosChEm); + jethadcortask->SetJetPhiLimits(minPhi,maxPhi); + jethadcortask->SetJetEtaLimits(minEta,maxEta); + jethadcortask->SetJetAreaCut(minArea); + jethadcortask->SetTracksName(nTracks); + jethadcortask->SetClusName(nClusters); + jethadcortask->SetCalo2Name(nClustersCorr); + jethadcortask->SetPtCut(0.15); + + //------------------------------------------------------- + // Final settings, pass to manager and set the containers + //------------------------------------------------------- + + mgr->AddTask(jethadcortask); + + // Create containers for input/output + mgr->ConnectInput (jethadcortask, 0, mgr->GetCommonInputContainer() ); + AliAnalysisDataContainer *cojethadcor = mgr->CreateContainer(name, + TList::Class(), + AliAnalysisManager::kOutputContainer, + outfilename); + mgr->ConnectOutput(jethadcortask,1,cojethadcor); + + return jethadcortask; +} diff --git a/PWGJE/PWGJEEMCALJetTasksLinkDef.h b/PWGJE/PWGJEEMCALJetTasksLinkDef.h index cc62c360430..f1a6d8a741f 100644 --- a/PWGJE/PWGJEEMCALJetTasksLinkDef.h +++ b/PWGJE/PWGJEEMCALJetTasksLinkDef.h @@ -27,19 +27,20 @@ #pragma link C++ class AliRhoParameter+; // user tasks -#pragma link C++ class AliAnalysisTaskEmcalJetHMEC+; -#pragma link C++ class AliAnalysisTaskEmcalJetSpectra+; -#pragma link C++ class AliAnalysisTaskSAJF+; -#pragma link C++ class AliAnalysisTaskSAQA+; #pragma link C++ class AliAnalysisTaskCLQA+; -#pragma link C++ class AliAnalysisTaskSOH+; -#pragma link C++ class AliAnalysisTaskFullppJet; #pragma link C++ class AliAnalysisTaskChargedJetsPA; +#pragma link C++ class AliAnalysisTaskEmcalJetHMEC+; +#pragma link C++ class AliAnalysisTaskEmcalJetHadCorQA+; #pragma link C++ class AliAnalysisTaskEmcalJetSample+; -#pragma link C++ class AliAnalysisTaskFullpAJets+; +#pragma link C++ class AliAnalysisTaskEmcalJetSpectra+; #pragma link C++ class AliAnalysisTaskEmcalJetSpectraMECpA; +#pragma link C++ class AliAnalysisTaskFullpAJets+; +#pragma link C++ class AliAnalysisTaskFullppJet; #pragma link C++ class AliAnalysisTaskQualityAssurancePA; -#pragma link C++ class AliNtupCumInfo+; #pragma link C++ class AliAnalysisTaskRhoVnModulation+; +#pragma link C++ class AliAnalysisTaskSAJF+; +#pragma link C++ class AliAnalysisTaskSAQA+; +#pragma link C++ class AliAnalysisTaskSOH+; +#pragma link C++ class AliNtupCumInfo+; #endif