#include "TH3F.h"
#include "THnSparse.h"
#include "TCanvas.h"
-
+#include "TRandom3.h"
#include "AliLog.h"
#include "AliAnalysisTask.h"
fFlagPhiBkg(0),
fFlagEtaBkg(0),
fFlagJetHadron(0),
+fTTLow(11),
+fTTUp(13),
+fHardest(0),
fFlagRandom(0),
fFlagOnlyRecoil(0),
fFlagOnlyHardest(1),
fh2RPTC20(0x0),
fHJetSpec(0x0),
fhTTPt(0x0),
-fHJetPhiCorr(0x0)
-
+fHJetPhiCorr(0x0),
+fRandom(0x0)
{
// default Constructor
fFlagPhiBkg(0),
fFlagEtaBkg(0),
fFlagJetHadron(0),
+fTTLow(11),
+fTTUp(13),
+fHardest(0),
fFlagRandom(0),
fFlagOnlyRecoil(0),
fFlagOnlyHardest(1),
fh2RPTC20(0x0),
fHJetSpec(0x0),
fhTTPt(0x0),
-fHJetPhiCorr(0x0)
+fHJetPhiCorr(0x0),
+fRandom(0x0)
{
// Constructor
TH1::AddDirectory(kFALSE);
+ // set seed
+ fRandom = new TRandom3(0);
+
+
+
+
fHistEvtSelection = new TH1I("fHistEvtSelection", "event selection", 6, -0.5, 5.5);
fHistEvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
fHistEvtSelection->GetXaxis()->SetBinLabel(2,"events IN");
//for(Int_t n=0;n<aodJets[0]->GetEntriesFast();n++){
// ptsub[n]=0;
// inord[n]=0;}
-
+ Int_t nT=0;
TList ParticleList;
- Int_t nT = GetListOfTracks(&ParticleList);
+ if(fHardest==1) nT = GetListOfTracks(&ParticleList);
+ if(fHardest==0) nT=SelectTrigger(&ParticleList);
for (Int_t iJetType = 0; iJetType < 2; iJetType++) {
fListJets[iJetType]->Clear();
if (!aodJets[iJetType]) continue;
Int_t trigInTrack=-1;
fRPAngle = aod->GetHeader()->GetEventplane();
+
+
AliVParticle *partback = (AliVParticle*)ParticleList.At(nT);
if(!partback){
PostData(1, fOutputList);
}
+
+
+ Int_t AliAnalysisTaskJetCore::SelectTrigger(TList *list){
+ Int_t iCount = 0;
+ AliAODEvent *aod = 0;
+ if(!fESD)aod = fAODIn;
+ else aod = fAODOut;
+ if(!aod)return 0;
+ Int_t index=-1;
+ Double_t triggers[100];
+ for(Int_t cr=0;cr<100;cr++){triggers[cr]=-1;}
+ Int_t im=0;
+ for(int it = 0;it < aod->GetNumberOfTracks();++it){
+ AliAODTrack *tr = aod->GetTrack(it);
+ Bool_t bGood = false;
+ if(fFilterType == 0)bGood = true;
+ else if(fFilterType == 1)bGood = tr->IsHybridTPCConstrainedGlobal();
+ else if(fFilterType == 2)bGood =
+ tr->IsHybridGlobalConstrainedGlobal();
+ if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;
+ if(bGood==false) continue;
+ if(TMath::Abs(tr->Eta())>0.9)continue;
+ if(tr->Pt()<0.15)continue;
+ list->Add(tr);
+ iCount++;
+
+ if(tr->Pt()>=fTTLow && tr->Pt()<fTTUp){
+ triggers[im]=iCount-1;
+ im=im+1;}
+
+ }
+ Int_t rd=0;
+ if(im==0) rd=0;
+ if(im>0) rd=fRandom->Integer(im-1);
+ index=triggers[rd];
+
+
+
+
+
+ return index;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Int_t AliAnalysisTaskJetCore::GetHardestTrackBackToJet(AliAODJet *jetbig){
AliAODEvent *aod = 0;
class TH2F;
class TH3F;
class THnSparse;
+class TRandom3;
class AliESDEvent;
class AliAODExtension;
class AliAODEvent;
virtual void SetFlagPhiBkg(Int_t yesno){fFlagPhiBkg=yesno;}
virtual void SetFlagEtaBkg(Int_t yesno){fFlagEtaBkg=yesno;}
virtual void SetFlagJetHadron(Int_t yesno){fFlagJetHadron=yesno;}
+ virtual void SetTTLow(Float_t ttlow){fTTLow=ttlow;}
+ virtual void SetTTUp(Float_t ttup){fTTUp=ttup;}
+ virtual void SetFlagHardest(Int_t yesno){fHardest=yesno;}
virtual void SetFlagRandom(Int_t yesno){fFlagRandom=yesno;}
virtual void SetFlagOnlyRecoil(Int_t yesno){fFlagOnlyRecoil=yesno;}
virtual void SetFlagOnlyHardest(Int_t yesno){fFlagOnlyHardest=yesno;}
AliAODEvent *fAODOut; //! AOD event
AliAODExtension *fAODExtension; //! where we take the jets from can be input or output AOD
Int_t GetListOfTracks(TList *list);
+ Int_t SelectTrigger(TList *list);
Int_t GetHardestTrackBackToJet(AliAODJet *jet);
Int_t GetListOfTracksCloseToJet(TList *list,AliAODJet *jet);
// jets to compare
Int_t fFlagPhiBkg;
Int_t fFlagEtaBkg;
Int_t fFlagJetHadron;
+ Float_t fTTLow;
+ Float_t fTTUp;
+ Int_t fHardest;
Int_t fFlagRandom;
Int_t fFlagOnlyRecoil;
Int_t fFlagOnlyHardest;
Double_t fTrigBuffer[10][7]; //!buffer for triggers
TH2F *fhTTPt; //! Trigger track pt for normalization (Rongrong)
THnSparse *fHJetPhiCorr; //! Azimuthal correlation between trigger track and recoil jets (Rongrong)
+ TRandom3* fRandom; // TRandom3
+
AliAnalysisTaskJetCore(const AliAnalysisTaskJetCore&); // not implemented
AliAnalysisTaskJetCore& operator=(const AliAnalysisTaskJetCore&); // not implemented