fEtamin(-0.9),
fEtamax(0.9),
fAreacut(0.0),
- fDoEventMixing(0),
- fMixingTracks(50000),
+ fTrkBias(5),
+ fClusBias(5),
fESD(0),
fPoolMgr(0x0),
fOutputList(0),
fHistCentrality(0),
fHistJetEtaPhi(0),
fHistTrackEtaPhi(0),
- fHistJetHEtaPhi(0),
- fhnMixedEvents(0x0)
+ fHistJetHEtaPhi(0)
{
// Default Constructor
fEtamin(-0.9),
fEtamax(0.9),
fAreacut(0.0),
+ fTrkBias(5),
+ fClusBias(5),
fDoEventMixing(0),
fMixingTracks(50000),
fESD(0),
UInt_t cifras = 0; // bit coded, see GetDimParams() below
cifras = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<7;
fhnMixedEvents = NewTHnSparseF("fhnMixedEvents", cifras);
- }
- fhnMixedEvents->Sumw2();
+ fhnMixedEvents->Sumw2();
+ }
+
fOutputList->Add(fHistTrackPt);
fOutputList->Add(fHistCentrality);
//prevents 0 area jets from sneaking by when area cut == 0
if (jet->Area()==0)
continue;
+ //exclude jets with extremely high pt tracks which are likely misreconstructed
+ if(jet->MaxTrackPt()>100)
+ continue;
Double_t jetPt = jet->Pt();
Double_t jetPt = jet->Pt();
Double_t jeteta=jet->Eta();
- fHistJetPt[centbin]->Fill(jet->Pt());
-
- if ((jet->MaxTrackPt()>6) || (jet->MaxClusterPt()>6))
- fHistJetPtBias[centbin]->Fill(jet->Pt());
+ fHistJetPt[centbin]->Fill(jet->Pt());
+
+ if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias))
+ fHistJetPtBias[centbin]->Fill(jet->Pt());
fHistJetEtaPhi->Fill(jet->Eta(),jetphi);
Double_t fvertex[3]={0,0,0};
InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex);
Double_t zVtx=fvertex[3];
-
+
if(fDoEventMixing>0){
// event mixing
Int_t nMix = pool->GetCurrentNEvents();
-
- // Fill mixed-event histos here
- for (Int_t jMix=0; jMix<nMix; jMix++)
- {
- TObjArray* bgTracks = pool->GetEvent(jMix);
- const Int_t Nbgtrks = bgTracks->GetEntries();
- for(Int_t ibg=0; ibg<Nbgtrks; ibg++){
- AliPicoTrack *part = static_cast<AliPicoTrack*>(bgTracks->At(ibg));
- if(!part) continue;
-
- Double_t DPhi = jetphi - part->Phi();
- Double_t DEta = jeteta - part->Eta();
- Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
- if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
- if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
- Double_t triggerEntries[7] = {fcent,jetPt,part->Pt(),DR,DEta,DPhi,0.0};
- fhnMixedEvents->Fill(triggerEntries,1./nMix);
+ //Fill for biased jet triggers only
+ if ((jet->MaxTrackPt()>fTrkBias) || (jet->MaxClusterPt()>fClusBias)){
+
+ // Fill mixed-event histos here
+ for (Int_t jMix=0; jMix<nMix; jMix++)
+ {
+ TObjArray* bgTracks = pool->GetEvent(jMix);
+ const Int_t Nbgtrks = bgTracks->GetEntries();
+ for(Int_t ibg=0; ibg<Nbgtrks; ibg++){
+ AliPicoTrack *part = static_cast<AliPicoTrack*>(bgTracks->At(ibg));
+ if(!part) continue;
+
+ Double_t DPhi = jetphi - part->Phi();
+ Double_t DEta = jeteta - part->Eta();
+ Double_t DR=TMath::Sqrt(DPhi*DPhi+DEta*DEta);
+ if(DPhi<-0.5*TMath::Pi()) DPhi+=2.*TMath::Pi();
+ if(DPhi>3./2.*TMath::Pi()) DPhi-=2.*TMath::Pi();
+ Double_t triggerEntries[7] = {fcent,jetPt,part->Pt(),DR,DEta,DPhi,0.0};
+ fhnMixedEvents->Fill(triggerEntries,1./nMix);
+
+
+ }
}
-
- }
+ }
}
}
for (Int_t i=0; i<tracks->GetEntriesFast(); i++)
{
AliVParticle* particle = (AliVParticle*) tracks->At(i);
+ if(TMath::Abs(particle->Eta())>0.9) continue;
+ if(particle->Pt()<0.15)continue;
+
tracksClone->Add(new AliPicoTrack(particle->Pt(), particle->Eta(), particle->Phi(), particle->Charge(), 0, 0, 0, 0));
}
virtual THnSparse* NewTHnSparseF(const char* name, UInt_t entries);
virtual void GetDimParams(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
- virtual void SetTracksName(const char *n) {fTracksName=n;}
- virtual void SetJetsName(const char *jn) {fJetsName=jn;}
+ virtual void SetTracksName(const char *n) {fTracksName=n;}
+ virtual void SetJetsName(const char *jn) {fJetsName=jn;}
virtual void SetAreaCut(Double_t a) { fAreacut = a; }
+ virtual void SetTrkBias(Double_t b) { fTrkBias = b; } //require a track with pt > b in jet
+ virtual void SetClusBias(Double_t b) { fClusBias = b; } //require a cluster with pt > b in jet
+
virtual void SetJetEta(Double_t emin, Double_t emax) { fEtamin = emin; fEtamax = emax; }
virtual void SetJetPhi(Double_t pmin, Double_t pmax) { fPhimin = pmin; fPhimax = pmax; }
- virtual void SetEventMixing(Int_t yesno){fDoEventMixing=yesno;}
- virtual void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }
+ virtual void SetEventMixing(Int_t yesno) { fDoEventMixing=yesno;}
+ virtual void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }
virtual Int_t GetEtaBin(Double_t eta) const;
virtual Int_t GetpTjetBin(Double_t pt) const;
- TString fTracksName; //name of tracks collection
- TString fJetsName; //name of Jet collection
+ TString fTracksName; //name of tracks collection
+ TString fJetsName; //name of Jet collection
Double_t fPhimin; // phi min
Double_t fPhimax; // phi max
Double_t fEtamin; // eta min
Double_t fEtamax; // eta max
Double_t fAreacut; // area cut
+ Double_t fTrkBias;
+ Double_t fClusBias;
Int_t fDoEventMixing;
Int_t fMixingTracks; // size of track buffer for event mixing
TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
AliAnalysisTaskEmcalJetHMEC(const AliAnalysisTaskEmcalJetHMEC&); // not implemented
AliAnalysisTaskEmcalJetHMEC& operator=(const AliAnalysisTaskEmcalJetHMEC&); // not implemented
- ClassDef(AliAnalysisTaskEmcalJetHMEC, 5);
+ ClassDef(AliAnalysisTaskEmcalJetHMEC, 6);
};
#endif
#include <TFile.h>
#include <TH1F.h>
#include <TH2F.h>
+#include <THnSparse.h>
#include <TLorentzVector.h>
#include <TTree.h>
fIsTrain(0),
fExoticCut(0.97),
fIsoConeR(0.4),
+ fNDimensions(7),
+ fECut(3.),
fESD(0),
fOutputList(0),
fEvtSel(0),
fAllIsoVsEtPhoTM(0),
fCeIsoVsEtPi0TM(0),
fTrIsoVsEtPi0TM(0),
- fAllIsoVsEtPi0TM(0)
+ fAllIsoVsEtPi0TM(0),
+ fHnOutput(0)
{
// Default constructor.
}
fIsTrain(0),
fExoticCut(0.97),
fIsoConeR(0.4),
+ fNDimensions(7),
+ fECut(3.),
fESD(0),
fOutputList(0),
fEvtSel(0),
fAllIsoVsEtPhoTM(0),
fCeIsoVsEtPi0TM(0),
fTrIsoVsEtPi0TM(0),
- fAllIsoVsEtPi0TM(0)
+ fAllIsoVsEtPi0TM(0),
+ fHnOutput(0)
{
// Constructor
fAllIsoVsEtPi0TM->Sumw2();
fOutputList->Add(fAllIsoVsEtPi0TM);
+ const Int_t ndims = fNDimensions;
+ Int_t nEt=1000, nM02=400, nCeIso=1000, nTrIso=1000, nAllIso=1000, nTrClDphi=200, nTrClDeta=100;
+ Int_t bins[] = {nEt, nM02, nCeIso, nTrIso, nAllIso, nTrClDphi, nTrClDeta};
+ Double_t xmin[] = { 0., 0., -10., -10., -10., -0.1,-0.05};
+ Double_t xmax[] = { 100., 4., 190., 190., 190., 0.1, 0.05};
+ fHnOutput = new THnSparseF("fHnOutput","Output matrix: E_{T},M02,CeIso,TrIso,AllIso, d#phi_{trk},d#eta_{trk}", ndims, bins, xmin, xmax);
+ fOutputList->Add(fHnOutput);
+
+
+
PostData(1, fOutputList);
}
continue;
if(!c->IsEMCAL())
continue;
+ if(c->E()<fECut)
+ continue;
Short_t id;
Double_t Emax = GetMaxCellEnergy( c, id);
Double_t Ecross = GetCrossEnergy( c, id);
Float_t ceisoue = cephiband/phibandArea*netConeArea;
Float_t trisoue = trphiband/phibandArea*netConeArea;
Float_t allisoue = allphiband/phibandArea*netConeArea;
- Double_t dR = TMath::Sqrt(pow(c->GetTrackDx(),2)+pow(c->GetTrackDz(),2));
+ const Int_t ndims = fNDimensions;
+ Double_t outputValues[ndims];
+ outputValues[0] = Et;
+ outputValues[1] = c->GetM02();
+ outputValues[2] = ceiso-cecore-ceisoue;
+ outputValues[3] = triso-trisoue;
+ outputValues[4] = alliso-cecore-allisoue;
+ outputValues[5] = c->GetTrackDx();
+ outputValues[6] = c->GetTrackDz();
+ fHnOutput->Fill(outputValues);
+ /* Double_t dR = TMath::Sqrt(pow(c->GetTrackDx(),2)+pow(c->GetTrackDz(),2));
Double_t M02u;
if(Et<12)
M02u = 0.02486*Et*Et - 0.7289*Et + 6.266;
fTrIsoVsEtPi0TM->Fill(Et, triso - trcore - trisoue);
fAllIsoVsEtPi0TM->Fill(Et, alliso - allcore - allisoue);
}
- }
+ }*/
if(c->E()>maxE)
maxE = c->E();
}
class TH1F;
class TH2F;
+class THnSparse;
class TObjArray;
class AliEMCALGeometry;
class AliESDCaloCells;
Bool_t fIsTrain; // variable to set train mode
Double_t fExoticCut; // variable to set the cut on exotic clusters
Double_t fIsoConeR; // variable to set the isolation cone radius
+ Int_t fNDimensions; // variable to set the number of dimensions of n-sparse
+ Double_t fECut; // variable to set the minimum E of a cluster
private:
AliESDEvent *fESD; //! ESD object
TH2F *fCeIsoVsEtPi0TM; //!Track-matched Neutral isolation Et vs. cluster Et, pi0 selection (BG)
TH2F *fTrIsoVsEtPi0TM; //!Track-matched Charged isolation Et vs. cluster Et, pi0 selection (BG)
TH2F *fAllIsoVsEtPi0TM; //!Track-matched Total isolation Et vs. cluster Et, pi0 selection (BG)
-
+ THnSparse *fHnOutput; //!Output matrix with 7 dimensions
+
AliAnalysisTaskEMCALIsoPhoton(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
AliAnalysisTaskEMCALIsoPhoton& operator=(const AliAnalysisTaskEMCALIsoPhoton&); // not implemented
ClassImp(AliAnalysisTaskPi0V2)
//________________________________________________________________________
-AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2() // All data members should be initialised here
- // :AliAnalysisTaskSE(),
- :AliAnalysisTaskSE(),
+//AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2() // All data members should be initialised here
+AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2(const char *name) // All data members should be initialised here
+ :AliAnalysisTaskSE(name),
fOutput(0),
fESD(0),
fcheckEP2sub(1),
}
//________________________________________________________________________
-AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2(const char *name) // All data members should be initialised here
- :AliAnalysisTaskSE(name),
+//AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2(const char *name) // All data members should be initialised here
+AliAnalysisTaskPi0V2::AliAnalysisTaskPi0V2() // All data members should be initialised here
+ :AliAnalysisTaskSE(),
fOutput(0),
fESD(0),
fcheckEP2sub(1),
Int_t iphis = -1;
Int_t ietas = -1;
- Double_t crossEnergy = 0;
+ Double_t crossEnergy = 0.;
geom->GetCellIndex(idmax,iSupMod,iTower,iIphi,iIeta);
geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi, iIeta,iphis,ietas);
Short_t id = -1;
Double_t maxE = GetMaxCellEnergy(c, id);
- if((1. - GetCrossEnergy(c,id) / maxE) > 0.97)
+ if((1. - double(GetCrossEnergy(c,id))/maxE) > 0.97)
return kFALSE;
+
Float_t pos1[3];
c->GetPosition(pos1);
TVector3 clsPos(pos1);
}
hEvtCount->Fill(3);
-
AliEventplane *ep = fESD->GetEventplane();
if (ep) {
if (ep->GetQVector())
}
//cout<<" fEPV0:"<<fEPV0<<" fEPV0A:"<<fEPV0A<<" fEPV0C:"<<fEPV0C<<" fEPV0Ar:"<<fEPV0Ar<<" fEPV0Cr:"<<fEPV0Cr<<" fEPV0r:"<<fEPV0AR4<<" fEPV0AR7:"<<fEPV0AR7<<" fEPV0CR0:"<<fEPV0CR0<<" fEPV0CR3:"<<fEPV0CR3<<"--------------------------------------------"<<endl;
+//cout<<" EPTPC: "<<fEPTPC<<" resoTPC: "<<fEPTPCreso<<"---------------"<<endl;
+
hEvtCount->Fill(4);
if(fcheckEP2sub){
Int_t nCluster = fESD->GetNumberOfCaloClusters();
for(Int_t i=0; i<nCluster; ++i){
AliESDCaloCluster *c1 = fESD->GetCaloCluster(i);
+ if(!c1->IsEMCAL()) continue;
if(!IsGoodCluster(c1)) continue;
for(Int_t j=i+1; j<nCluster; ++j){
AliESDCaloCluster *c2 = fESD->GetCaloCluster(j);
+ if(!c2->IsEMCAL()) continue;
if(!IsGoodCluster(c2)) continue;
TLorentzVector p1;
GetMom(p1, c1, vertex);
class AliAnalysisTaskPi0V2 : public AliAnalysisTaskSE {
public:
- AliAnalysisTaskPi0V2();
AliAnalysisTaskPi0V2(const char *name);
+ AliAnalysisTaskPi0V2();
virtual ~AliAnalysisTaskPi0V2();
virtual void UserCreateOutputObjects();