--- /dev/null
+AliGenerator* AddMCGenPythia8(Float_t e_cms = 2760., Bool_t kCR = kTRUE)
+{
+ // Add Pythia 8 generator:
+ // - Color reconnection = ON/OFF
+
+ gSystem->Load("liblhapdf.so");
+
+ AliGenerator *genP = NULL;
+ genP = CreatePythia8Gen(e_cms, kCR);
+
+ return genP;
+}
+
+AliGenerator* CreatePythia8Gen(Float_t e_cms, Bool_t kCR) {
+
+ gSystem->Load("libpythia6.so");
+ gSystem->Load("libAliPythia6.so");
+ gSystem->Load("libpythia8.so");
+ gSystem->Load("libAliPythia8.so");
+ gSystem->Setenv("PYTHIA8DATA", gSystem->ExpandPathName("$ALICE_ROOT/PYTHIA8/pythia8175/xmldoc"));
+ gSystem->Setenv("LHAPDF", gSystem->ExpandPathName("$ALICE_ROOT/LHAPDF"));
+ gSystem->Setenv("LHAPATH", gSystem->ExpandPathName("$ALICE_ROOT/LHAPDF/PDFsets"));
+
+
+ AliGenPythiaPlus* gener = new AliGenPythiaPlus(AliPythia8::Instance());
+
+ // set process (MB)
+ gener->SetProcess(kPyMbDefault);
+ // // charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb
+ // if(ptHardMin>0.) {
+ // gener->SetProcess(kPyJets);
+ // gener->SetPtHard((float)ptHardMin,(float)ptHardMax);
+ // } else
+ // gener->SetProcess(kPyMb); // Minimum Bias
+
+ // Centre of mass energy
+ gener->SetEnergyCMS(e_cms); // in GeV
+
+ // Event list
+ gener->SetEventListRange(-1, 2);
+
+ // color reconnection
+ (AliPythia8::Instance())->ReadString("Tune:pp = 5");//CR
+ //gener->UseNewMultipleInteractionsScenario(); // for all Pythia versions >= 6.3
+
+ if(kCR)
+ (AliPythia8::Instance())->ReadString("BeamRemnants:reconnectColours = on");
+ else
+ (AliPythia8::Instance())->ReadString("BeamRemnants:reconnectColours = off");
+
+
+ // vertex position and smearing
+ //gener->SetVertexSmear(kPerEvent);
+
+ // structure function
+ // use kCTEQ5l for Perugia tunes
+ // except for tunes: Perugia * (325, MRSTLO*), Perugia 6 (326, CTEQ6L),
+ // Perugia 11 M (355, MRST LO**), Perugia 11 C (356, CTEQ6L1)
+ //gener->SetStrucFunc(kCTEQ5L);
+
+ return gener;
+}
--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+* Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+* See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+* full copyright notice. *
+**************************************************************************/
+
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TGeoManager.h>
+#include <TGeoNode.h>
+#include <TEveManager.h>
+#include <TEveGeoNode.h>
+
+#include <AliEveEventManager.h>
+#endif
+
+void geom_mft()
+
+{
+ // AliEveEventManager::AssertGeometry();
+
+ gGeoManager = gEve->GetGeometry("geometry.root");
+
+ TEveElementList* list = new TEveElementList("MFT");
+ gEve->AddGlobalElement(list);
+
+ TGeoNode *node1 = gGeoManager->GetTopVolume()->FindNode("MFT_0");
+ if (!node1) {
+ Warning("geom_mft()", "Node MFT_0 not found !");
+ return;
+ }
+
+ TEveGeoTopNode* re1 = new TEveGeoTopNode(gGeoManager,node1);
+ re1->UseNodeTrans();
+ gEve->AddGlobalElement(re1,list);
+
+ gEve->Redraw3D();
+
+ Info("geom_mft.C", "Done");
+}
//_____________________________________________________________________________
AliJetFlowTools::AliJetFlowTools() :
fResponseMaker (new AliAnaChargedJetResponseMaker()),
+ fRMS (kTRUE),
+ fSymmRMS (kTRUE),
fPower (new TF1("fPower","[0]*TMath::Power(x,-([1]))",0.,300.)),
fSaveFull (kTRUE),
fActiveString (""),
TGraphAsymmErrors*& shapeV2, // pointer reference to final shape uncertainty of v2
TArrayI* regularizationIn, // regularization strength systematics, in plane
TArrayI* regularizationOut, // regularization strenght systematics, out of plane
- Bool_t RMS, // get RMS instead of absolute value
TArrayI* trueBinIn, // true bin ranges, in plane
TArrayI* trueBinOut, // true bin ranges, out of plane
TArrayI* recBinIn, // rec bin ranges, in plane
rangeUp,
readMe,
"regularization",
- RMS);
+ fRMS);
if(relativeErrorRegularizationInUp) {
// canvas with the error from regularization strength
TCanvas* relativeErrorRegularization(new TCanvas("relativeErrorRegularization", "relativeErrorRegularization"));
// for the lower bound
if(relativeErrorRegularizationInLow) aInLow = relativeErrorRegularizationInLow->GetBinContent(b+1);
if(relativeErrorRegularizationOutLow) aOutLow = relativeErrorRegularizationOutLow->GetBinContent(b+1);
+ if(fSymmRMS) { // take first category as symmetric
+ aInLow = aInUp;
+ aOutLow = aOutUp;
+ }
if(relativeErrorTrueBinInLow) bInLow = relativeErrorTrueBinInLow->GetBinContent(b+1);
if(relativeErrorTrueBinOutLow) bOutLow = relativeErrorTrueBinOutLow->GetBinContent(b+1);
if(relativeErrorRecBinInLow) cInLow = relativeErrorRecBinInLow->GetBinContent(b+1);
relativeErrorOutUp = new TH1D(Form("max #sigma/|x| from %s", source.Data()), Form("max #sigma/|x| from %s", source.Data()), fBinsTrue->GetSize()-1, fBinsTrue->GetArray());
relativeErrorOutLow = new TH1D(Form("min #sigma/|x| from %s", source.Data()), Form("min #sigma/|x| from %s", source.Data()), fBinsTrue->GetSize()-1, fBinsTrue->GetArray());
for(Int_t b(0); b < fBinsTrue->GetSize()-1; b++) {
- relativeErrorInUp->SetBinContent(b+1, 1.);
- relativeErrorInUp->SetBinError(b+1, 0.);
- relativeErrorOutUp->SetBinContent(b+1, 1.);
- relativeErrorOutUp->SetBinError(b+1, .0);
- relativeErrorInLow->SetBinContent(b+1, 1.);
- relativeErrorInLow->SetBinError(b+1, 0.);
- relativeErrorOutLow->SetBinContent(b+1, 1.);
- relativeErrorOutLow->SetBinError(b+1, .0);
+ if(!RMS) {
+ relativeErrorInUp->SetBinContent(b+1, 1.);
+ relativeErrorInUp->SetBinError(b+1, 0.);
+ relativeErrorOutUp->SetBinContent(b+1, 1.);
+ relativeErrorOutUp->SetBinError(b+1, .0);
+ relativeErrorInLow->SetBinContent(b+1, 1.);
+ relativeErrorInLow->SetBinError(b+1, 0.);
+ relativeErrorOutLow->SetBinContent(b+1, 1.);
+ relativeErrorOutLow->SetBinError(b+1, .0);
+ } else if(RMS) {
+ relativeErrorInUp->SetBinContent(b+1, 0.);
+ relativeErrorInUp->SetBinError(b+1, 0.);
+ relativeErrorOutUp->SetBinContent(b+1, 0.);
+ relativeErrorOutUp->SetBinError(b+1, 0.);
+ relativeErrorInLow->SetBinContent(b+1, 0.);
+ relativeErrorInLow->SetBinError(b+1, 0.);
+ relativeErrorOutLow->SetBinContent(b+1, 0.);
+ relativeErrorOutLow->SetBinError(b+1, 0.);
+ }
}
+ Int_t relativeErrorInUpN[100] = {0};
+ Int_t relativeErrorOutUpN[100] = {0};
+ Int_t relativeErrorInLowN[100] = {0};
+ Int_t relativeErrorOutLowN[100] = {0};
+
// define an output histogram with the systematic error from this systematic constribution
if(!relativeStatisticalErrorIn && !relativeStatisticalErrorOut) {
relativeStatisticalErrorIn = new TH1D("relative statistical error, in plane", "#sigma/|x|, statistical, in plane", fBinsTrue->GetSize()-1, fBinsTrue->GetArray());
relativeErrorInLow->SetBinContent(b+1, temp->GetBinContent(b+1));
relativeErrorInLow->SetBinError(b+1, 0.);
}
- } else if (RMS) { // save info necessary for evaluating the RMS of a distribution of variations
- if( temp->GetBinContent(b+1) < 1) {
+ } else if (RMS && !fSymmRMS) { // save info necessary for evaluating the RMS of a distribution of variations
+ printf(" oops shouldnt be here \n " );
+ if(temp->GetBinContent(b+1) < 1) {
relativeErrorInUp->SetBinContent(b+1, relativeErrorInUp->GetBinContent(b+1)+TMath::Power(1.-temp->GetBinContent(b+1), 2));
+ relativeErrorInUpN[b]++;
}
// the variation is LOWER than the nominal point, so the bar goes DOWN
else if(temp->GetBinContent(b+1) > 1) {
relativeErrorInLow->SetBinContent(b+1, relativeErrorInLow->GetBinContent(b+1)+TMath::Power(1.-temp->GetBinContent(b+1), 2));
+ relativeErrorInLowN[b]++;
}
+ } else if (fSymmRMS) {
+ // save symmetric sum of square to get a symmetric rms
+ relativeErrorInUp->SetBinContent(b+1, relativeErrorInUp->GetBinContent(b+1)+TMath::Power(temp->GetBinContent(b+1)-1., 2));
+ relativeErrorInUpN[b]++;
}
if(temp->GetBinError(b+1) > 0) relativeStatisticalErrorIn->SetBinContent(b+1, temp->GetBinError(b+1)/temp->GetBinContent(b+1));
}
relativeErrorOutLow->SetBinContent(b+1, temp->GetBinContent(b+1));
relativeErrorOutLow->SetBinError(b+1, 0.);
}
- } else if (RMS) {
+ } else if (RMS && !fSymmRMS) {
+ printf(" OOps \n ");
if(temp->GetBinContent(b+1) < 1) {
relativeErrorOutUp->SetBinContent(b+1, relativeErrorOutUp->GetBinContent(b+1)+TMath::Power(1.-temp->GetBinContent(b+1), 2));
+ relativeErrorOutUpN[b]++;
}
else if(temp->GetBinContent(b+1) > 1) {
relativeErrorOutLow->SetBinContent(b+1, relativeErrorOutLow->GetBinContent(b+1)+TMath::Power(1.-temp->GetBinContent(b+1), 2));
+ relativeErrorOutLowN[b]++;
}
+ } else if (fSymmRMS) {
+ // save symmetric rms value
+ relativeErrorOutUp->SetBinContent(b+1, relativeErrorOutUp->GetBinContent(b+1)+TMath::Power(temp->GetBinContent(b+1)-1., 2));
+ relativeErrorOutUpN[b]++;
}
if(temp->GetBinError(b+1) > 0) relativeStatisticalErrorOut->SetBinContent(b+1, temp->GetBinError(b+1)/temp->GetBinContent(b+1));
}
// these guys are already stored as percentages, so no need to remove the offset of 1
// RMS is defined as sqrt(sum(squared))/N
// min is defined as negative, max is defined as positive
- Float_t n((float)variationsIn->GetSize()-1); // first variation is nominal, so shouldn't be counted
- relativeErrorInUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorInUp->GetBinContent(b+1))/n);
- relativeErrorInUp->SetBinError(b+1, 0.);
- relativeErrorOutUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorOutUp->GetBinContent(b+1))/n);
- relativeErrorOutUp->SetBinError(b+1, .0);
- relativeErrorInLow->SetBinContent(b+1, -1.*TMath::Sqrt(relativeErrorInLow->GetBinContent(b+1))/n);
- relativeErrorInLow->SetBinError(b+1, 0.);
- relativeErrorOutLow->SetBinContent(b+1, -1.*TMath::Sqrt(relativeErrorOutLow->GetBinContent(b+1))/n);
- relativeErrorOutLow->SetBinError(b+1, .0);
+ if(!fSymmRMS) {
+ if(relativeErrorInUpN[b] < 1) relativeErrorInUpN[b] = 1;
+ if(relativeErrorInLowN[b] < 1) relativeErrorInLowN[b] = 1;
+ if(relativeErrorOutUpN[b] < 1) relativeErrorOutUpN[b] = 1;
+ if(relativeErrorOutLowN[b] < 1) relativeErrorOutLowN[b] = 1;
+ relativeErrorInUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorInUp->GetBinContent(b+1)/relativeErrorInUpN[b]));
+ relativeErrorInUp->SetBinError(b+1, 0.);
+ relativeErrorOutUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorOutUp->GetBinContent(b+1)/relativeErrorOutUpN[b]));
+ relativeErrorOutUp->SetBinError(b+1, .0);
+ relativeErrorInLow->SetBinContent(b+1, -1.*TMath::Sqrt(relativeErrorInLow->GetBinContent(b+1)/relativeErrorInLowN[b]));
+ relativeErrorInLow->SetBinError(b+1, 0.);
+ relativeErrorOutLow->SetBinContent(b+1, -1.*TMath::Sqrt(relativeErrorOutLow->GetBinContent(b+1)/relativeErrorOutLowN[b]));
+ relativeErrorOutLow->SetBinError(b+1, .0);
+ } else if (fSymmRMS) {
+ if(relativeErrorInUpN[b] < 1) relativeErrorInUpN[b] = 1;
+ if(relativeErrorOutUpN[b] < 1) relativeErrorOutUpN[b] = 1;
+ relativeErrorInUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorInUp->GetBinContent(b+1)/relativeErrorInUpN[b]));
+ relativeErrorOutUp->SetBinContent(b+1, TMath::Sqrt(relativeErrorOutUp->GetBinContent(b+1)/relativeErrorOutUpN[b]));
+ }
}
}
relativeErrorInUp->SetYTitle("relative uncertainty");
void SetDphiDptUnfolding(Bool_t i) {fDphiDptUnfolding = i;}
void SetExLJDpt(Bool_t i) {fExLJDpt = i;}
void SetWeightFunction(TF1* w) {fResponseMaker->SetRMMergeWeightFunction(w);}
+ void SetRMS(Bool_t r) {fRMS = r;}
+ void SetSymmRMS(Bool_t r) {fSymmRMS = r; fRMS = r;}
void Make();
void MakeAU(); // test function, use with caution (09012014)
void Finish() {
TGraphAsymmErrors*& shapeV2,
TArrayI* regularizationIn,
TArrayI* regularizationOut,
- Bool_t RMS = kFALSE,
TArrayI* trueBinIn = 0x0,
TArrayI* trueBinOut = 0x0,
TArrayI* recBinIn = 0x0,
}
static TPaveText* AddTPaveText(TString text, Int_t r = 2) {
TPaveText* t(new TPaveText(.35, .27, .76, .33,"NDC"));
-// t->SetFillStyle(0);
t->SetFillColor(0);
t->SetBorderSize(0);
t->AddText(0.,0.,text.Data());
t->AddText(0., 0., Form("#it{R} = 0.%i #it{k}_{T} charged jets", r));
t->SetTextColor(kBlack);
-// t->SetTextSize(0.03);
t->SetTextFont(42);
t->Draw("same");
return t;
}
static TPaveText* AddText(TString text, EColor col) {
TPaveText* t(new TPaveText(.35, .27, .76, .33,"NDC"));
-// t->SetFillStyle(0);
t->SetFillColor(0);
t->SetBorderSize(0);
t->AddText(0.,0.,text.Data());
t->SetTextColor(col);
-// t->SetTextSize(0.03);
t->SetTextFont(42);
t->Draw("same");
return t;
TGraphErrors* ProtectHeap(TGraphErrors* protect, Bool_t kill = kTRUE, TString suffix = "") const;
// members, accessible via setters
AliAnaChargedJetResponseMaker* fResponseMaker; // utility object
+ Bool_t fRMS; // systematic method
+ Bool_t fSymmRMS; // symmetric systematic method
TF1* fPower; // smoothening fit
Bool_t fSaveFull; // save all generated histograms to file
TString fActiveString; // identifier of active output
fParticleSpeciesTrigger(-1),
fParticleSpeciesAssociated(-1),
fCheckMotherPDG(kTRUE),
-fTrackletDphiCut(999.),
+fTrackletDphiCut(9999999.),
fSelectCharge(0),
fTriggerSelectCharge(0),
fAssociatedSelectCharge(0),
if (fTriggersFromDetector == 1 || fTriggersFromDetector == 2 || fAssociatedFromDetector == 1 || fAssociatedFromDetector == 2)
fListOfHistos->Add(new TH1F("V0SingleCells", "V0 single cell multiplicity;multiplicity;events", 100, -0.5, 99.5));
if (fTriggersFromDetector == 3 || fAssociatedFromDetector == 3)
- fListOfHistos->Add(new TH1F("DphiTrklets", "tracklets Dphi;#Delta#phi,trklets;entries", 100, -0.1, 0.1));
+ fListOfHistos->Add(new TH1F("DphiTrklets", "tracklets Dphi;#Delta#phi,trklets (mrad);entries", 100, -100, 100));
PostData(0,fListOfHistos);
{
Double_t eta=-TMath::Log(TMath::Tan(trklets->GetTheta(itrklets)/2));
if(TMath::Abs(eta)>fTrackEtaCut)continue;
- if(TMath::Abs(trklets->GetDeltaPhi(itrklets))>fTrackletDphiCut)continue;
+ Double_t pT=1000*TMath::Abs(trklets->GetDeltaPhi(itrklets));//in mrad
+ if(pT>fTrackletDphiCut)continue;
TH1F* DphiTrklets = (TH1F*)fListOfHistos->FindObject("DphiTrklets");
- DphiTrklets->Fill(trklets->GetDeltaPhi(itrklets));
- AliDPhiBasicParticle* particle = new AliDPhiBasicParticle(eta,trklets->GetPhi(itrklets), 1.1, 0); // fit pT = 1.1 and charge = 0
+ DphiTrklets->Fill(1000*trklets->GetDeltaPhi(itrklets)); //in mrad
+ AliDPhiBasicParticle* particle = new AliDPhiBasicParticle(eta,trklets->GetPhi(itrklets), pT, 0); // pT = TMath::Abs(trklets->GetDeltaPhi(itrklets)) in mrad and charge = 0
particle->SetUniqueID(fAnalyseUE->GetEventCounter()* 100000 + itrklets);
obj->Add(particle);
if (!track->IsMuonTrack()) continue;
//Float_t dca = track->DCA();
//Float_t chi2 = track->Chi2perNDF();
- //Int_t mask = track->GetMatchTrigger();
- Float_t eta = track->Eta();
Float_t rabs = track->GetRAtAbsorberEnd();
+ Float_t eta = track->Eta();
+ Int_t matching = track->GetMatchTrigger();
if (rabs < 17.6 || rabs > 89.5) continue;
if (eta < -4 || eta > -2.5) continue;
+ if (matching < 2) continue;
AliDPhiBasicParticle* particle = new AliDPhiBasicParticle(eta,track->Phi(), track->Pt(), track->Charge());
particle->SetUniqueID(fAnalyseUE->GetEventCounter() * 100000 + iTrack);
//_________________________
void AliFemtoModelBPLCMSCorrFctn::Finish(){
- fQinvHisto->Divide(fDenominator);
+ //fQinvHisto->Divide(fDenominator);
}
//____________________________
if (fUseRPSelection) {
AliFemtoKTPairCut *ktc = dynamic_cast<AliFemtoKTPairCut *>(fPairCut);
if (!ktc) {
- cout << "RP aware cut requested, but not connected to the CF" << endl;
- if (!(fPairCut->Pass(pair))) return;
+ cout << "RP aware cut requested, but not connected to the CF" << endl;
+ if (!(fPairCut->Pass(pair))) return;
}
else {
- AliFemtoAnalysisReactionPlane *arp = dynamic_cast<AliFemtoAnalysisReactionPlane *> (HbtAnalysis());
- if (!arp) {
- cout << "RP aware cut requested, but not connected to the CF" << endl;
- if (!(fPairCut->Pass(pair))) return;
- }
- else if (!(ktc->Pass(pair, arp->GetCurrentReactionPlane()))) return;
+ AliFemtoAnalysisReactionPlane *arp = dynamic_cast<AliFemtoAnalysisReactionPlane *> (HbtAnalysis());
+ if (!arp) {
+ cout << "RP aware cut requested, but not connected to the CF" << endl;
+ if (!(fPairCut->Pass(pair))) return;
+ }
+ else if (!(ktc->Pass(pair, arp->GetCurrentReactionPlane()))) return;
}
}
else
fDenominator3D->Fill(qOut, qSide, qLong, 1.0);
fNumeratorFake->Fill(pair->QInv(), weight);
fDenominator->Fill(pair->QInv(), 1.0);
- fQinvHisto->Fill(qOut, qSide, qLong, pair->QInv());
+ fQinvHisto->Fill(qOut, qSide, qLong, pair->QInv() );
}
//_______________________
AliFemtoModelCorrFctn* AliFemtoModelBPLCMSCorrFctn::Clone()
class AliFlowEventCuts;
-void AddTaskFlowSP(Int_t triggerSelectionString=AliVEvent::kMB,
+void AddTaskPIDFlowSP(Int_t triggerSelectionString=AliVEvent::kMB,
Float_t etamin=-0.8,
Float_t etamax=0.8,
Float_t EtaGap=0.2,
Int_t ncentrality = 6,
Bool_t doQA=kTRUE,
Bool_t isPID = kTRUE,
+ Bool_t VZERO = kFALSE, // use vzero sp method
AliPID::EParticleType particleType=AliPID::kPion,
AliFlowTrackCuts::PIDsource sourcePID=AliFlowTrackCuts::kTOFbayesian) {
const int ncentr = ncentrality;
-//---------Data selection----------
+//---------Data selection---------- ESD only!!!
//kMC, kGlobal, kESD_TPConly, kESD_SPDtracklet
AliFlowTrackCuts::trackParameterType rptype = AliFlowTrackCuts::kTPCstandalone;
AliFlowTrackCuts::trackParameterType poitype = AliFlowTrackCuts::kTPCstandalone;
AliFlowTrackCuts::trackParameterMix rpmix = AliFlowTrackCuts::kPure;
AliFlowTrackCuts::trackParameterMix poimix = AliFlowTrackCuts::kPure;
-const char* rptypestr = AliFlowTrackCuts::GetParamTypeName(rptype);
-const char* poitypestr = AliFlowTrackCuts::GetParamTypeName(poitype);
+const char* rptypestr = AliFlowTrackCuts::GetParamTypeName(rptype); //ESD
+const char* poitypestr = AliFlowTrackCuts::GetParamTypeName(poitype); //ESD
//===========================================================================
cutsEvent[icentr]->SetQA(doQA);
cutsEvent[icentr]->SetCutTPCmultiplicityOutliers();
-
// RP TRACK CUTS:
- cutsRP[icentr] = new AliFlowTrackCuts(Form("TPConlyRP_%d",icentr));
- cutsRP[icentr]->SetParamType(rptype);
- cutsRP[icentr]->SetParamMix(rpmix);
- cutsRP[icentr]->SetPtRange(0.2,5.);
- cutsRP[icentr]->SetEtaRange(etamin,etamax);
- cutsRP[icentr]->SetMinNClustersTPC(70);
- // cutsRP->SetMinChi2PerClusterTPC(0.1);//
- // cutsRP->SetMaxChi2PerClusterTPC(4.0);//
- cutsRP[icentr]->SetMaxDCAToVertexXY(3.0);
- cutsRP[icentr]->SetMaxDCAToVertexZ(3.0);
- cutsRP[icentr]->SetAcceptKinkDaughters(kFALSE);
- cutsRP[icentr]->SetMinimalTPCdedx(MinTPCdedx);
- cutsRP[icentr]->SetAODfilterBit(AODfilterBitRP);
+ cutsRP[icentr] = new AliFlowTrackCuts(Form("RP_%d",icentr));
+ if(!VZERO){
+ //cutsRP[icentr]->SetParamType(rptype);
+ cutsRP[icentr]->SetParamMix(rpmix);
+ cutsRP[icentr]->SetPtRange(0.2,5.);
+ cutsRP[icentr]->SetEtaRange(etamin,etamax);
+ cutsRP[icentr]->SetMinNClustersTPC(70);
+ // cutsRP->SetMinChi2PerClusterTPC(0.1);//
+ // cutsRP->SetMaxChi2PerClusterTPC(4.0);//
+ cutsRP[icentr]->SetMaxDCAToVertexXY(3.0);
+ cutsRP[icentr]->SetMaxDCAToVertexZ(3.0);
+ cutsRP[icentr]->SetAcceptKinkDaughters(kFALSE);
+ cutsRP[icentr]->SetMinimalTPCdedx(MinTPCdedx);
+ cutsRP[icentr]->SetAODfilterBit(AODfilterBitRP);
+ }
+
+ if(VZERO) { // use vzero sub analysis
+ cutsRP[icentr] = cutsRP[icentr]->GetStandardVZEROOnlyTrackCuts(); // select vzero tracks
+ // cutsRP[icentr]->SetV0gainEqualizationPerRing(kFALSE);
+ cutsRP[icentr]->SetApplyRecentering(kTRUE);
+ EtaGap = 0.;
+ }//vzero is not a tracking device it is just a scintillator. so pt range or DCAtoVertex are not set here.
cutsRP[icentr]->SetQA(doQA);
SP_POI[icentr]->SetParamMix(poimix);
SP_POI[icentr]->SetPtRange(0.2,5.);//
SP_POI[icentr]->SetMinNClustersTPC(70);
- if(Qvector=="Qa"){
+ if(!VZERO && Qvector=="Qa"){
SP_POI[icentr]->SetEtaRange( +0.5*EtaGap, etamax );
+ printf(" > NOTE: Using half TPC (Qa) as POI selection u < \n");
+
}
- if(Qvector=="Qb"){
+ if(!VZERO && Qvector=="Qb"){
SP_POI[icentr]->SetEtaRange( etamin,-0.5*EtaGap );
- }
+ printf(" > NOTE: Using half TPC (Qb) as POI selection u < \n");
+ }
+ if(VZERO){
+ SP_POI[icentr]->SetEtaRange( etamin,etamax );
+ printf(" > NOTE: Using full TPC as POI selection u < \n");
+ }
// SP_POI->SetMinChi2PerClusterTPC(0.1); //
// SP_POI->SetMaxChi2PerClusterTPC(4.0); //
// SP_POI->SetRequireITSRefit(kTRUE);
AliAnalysisManager::kExchangeContainer );
tskFilter[icentr][harm-2] = new AliAnalysisTaskFilterFE( Form("TaskFilter_%s",myNameSP[icentr][harm-2].Data()),cutsRP[icentr], NULL);
- tskFilter[icentr][harm-2]->SetSubeventEtaRange(etamin, -.5*EtaGap, +.5*EtaGap, etamax);
-
+ if(!VZERO){
+ tskFilter[icentr][harm-2]->SetSubeventEtaRange(etamin, -.5*EtaGap, +.5*EtaGap, etamax);
+ }
+ else tskFilter[icentr][harm-2]->SetSubeventEtaRange(-10, -1, +1, 10);
mgr->AddTask(tskFilter[icentr][harm-2]);
mgr->ConnectInput( tskFilter[icentr][harm-2],0,coutputFE[icentr]);
mgr->ConnectOutput(tskFilter[icentr][harm-2],1,flowEvent[icentr][harm-2]);
return cutsEvent;
}
AliFlowTrackCuts* DefineRPcuts(Int_t icentr){
- AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts(Form("TPConlyRP_%d",icentr));
+ AliFlowTrackCuts* cutsRP = new AliFlowTrackCuts(Form("RP_%d",icentr));
return cutsRP;
}
AliFlowTrackCuts* DefinePOIcuts(Int_t icentr){
- AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts(Form("TPConlyPOI_%d",icentr));
+ AliFlowTrackCuts* cutsPOI = new AliFlowTrackCuts(Form("POI_%d",icentr));
return cutsPOI;
}
else {
if (fIsHeavyIon == 1) fOfflineTriggerMask = AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral;
else if (fIsHeavyIon == 2) fOfflineTriggerMask = AliVEvent::kINT7;
- else if (periodName.CompareTo("LHC11c") == 0 || periodName.CompareTo("LHC11d") == 0 || periodName.CompareTo("LHC11e") == 0 || periodName.CompareTo("LHC11f") == 0 || periodName.CompareTo("LHC11g") == 0 || periodName.CompareTo("LHC12a") == 0 || periodName.CompareTo("LHC12b") == 0 || periodName.CompareTo("LHC12c") == 0 || periodName.CompareTo("LHC12d") == 0 || periodName.CompareTo("LHC11f") == 0 || periodName.CompareTo("LHC13g") == 0 ) fOfflineTriggerMask = AliVEvent::kINT7;
+ else if (periodName.CompareTo("LHC11c") == 0 || periodName.CompareTo("LHC11d") == 0 || periodName.CompareTo("LHC11e") == 0 || periodName.CompareTo("LHC11f") == 0 || periodName.CompareTo("LHC11g") == 0 || periodName.CompareTo("LHC12a") == 0 || periodName.CompareTo("LHC12b") == 0 || periodName.CompareTo("LHC12c") == 0 || periodName.CompareTo("LHC12d") == 0 || periodName.CompareTo("LHC12f") == 0 || periodName.CompareTo("LHC13g") == 0 ) {
+ fOfflineTriggerMask = AliVEvent::kINT7;
+// cout << "will take kINT7 as trigger mask" << endl;
+ }
else fOfflineTriggerMask = AliVEvent::kMB;
}
}
cutarray[ 2] = "5010001002092970022250400000"; mesonCutArray[2]= "01525065000000"; // 0-10%
cutarray[ 3] = "5240001002092970022250400000"; mesonCutArray[3]= "01525065000000"; // 20-40%
cutarray[ 4] = "5250001002092970022250400000"; mesonCutArray[4]= "01525065000000"; // 20-50%
- } else if ( trainConfig == 95){ // qt 0.07 no2D added signal
+ } else if ( trainConfig == 95){ // qt 0.07 no2D added signal
cutarray[ 0] = "6010002002092970022250400000"; mesonCutArray[0]= "01525065000000"; // 0-5%
cutarray[ 1] = "6120002002092970022250400000"; mesonCutArray[1]= "01525065000000"; // 5-10%
cutarray[ 2] = "5010002002092970022250400000"; mesonCutArray[2]= "01525065000000"; // 0-10%
cutarray[ 2] = "5010002002092970028280400000"; mesonCutArray[2]= "01525065000000"; // 0-10%
cutarray[ 3] = "5240002002092970028280400000"; mesonCutArray[3]= "01525065000000"; // 20-40%
cutarray[ 4] = "5250002002092970028280400000"; mesonCutArray[4]= "01525065000000"; // 20-50%
+ } else if ( trainConfig == 110){ // cleaner cuts
+ cutarray[ 0] = "6010001002092970028250400000"; mesonCutArray[ 0] = "01525065000000"; // 0-5%
+ cutarray[ 1] = "6120001002092970028250400000"; mesonCutArray[ 1] = "01525065000000"; // 5-10%
+ cutarray[ 2] = "5010001002092970028250400000"; mesonCutArray[ 2] = "01525065000000"; // 0-10%
+ cutarray[ 3] = "5240001002092970028250400000"; mesonCutArray[ 3] = "01525065000000"; // 10-20%
+ cutarray[ 4] = "5250001002092970028250400000"; mesonCutArray[ 4] = "01525065000000"; // 0-20%
+ } else if ( trainConfig == 111){ // cleaner cuts added signal
+ cutarray[ 0] = "6010002002092970028250400000"; mesonCutArray[ 0] = "01525065000000"; // 0-5%
+ cutarray[ 1] = "6120002002092970028250400000"; mesonCutArray[ 1] = "01525065000000"; // 5-10%
+ cutarray[ 2] = "5010002002092970028250400000"; mesonCutArray[ 2] = "01525065000000"; // 0-10%
+ cutarray[ 3] = "5240002002092970028250400000"; mesonCutArray[ 3] = "01525065000000"; // 10-20%
+ cutarray[ 4] = "5250002002092970028250400000"; mesonCutArray[ 4] = "01525065000000"; // 0-20%
} else {
- Error(Form("GammaConvV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
- return;
+ Error(Form("GammaConvV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
+ return;
}
TList *ConvCutList = new TList();
if (trainConfig == 56 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_1020TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_1020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0020TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0020V0M","Eta_Fit_Data_PbPb_2760GeV_0020V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_1020TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_1020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0020TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0020V0M","Eta_Fit_Data_PbPb_2760GeV_0020V0M");
}
}
if (trainConfig == 57 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_1020TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_1020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0020TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0020V0M","Eta_Fit_Data_PbPb_2760GeV_0020V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_1020TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_1020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0020TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0020TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0020V0M","Eta_Fit_Data_PbPb_2760GeV_0020V0M");
}
}
if (trainConfig == 58 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4060TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M","Eta_Fit_Data_PbPb_2760GeV_4060V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_6080TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_6080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M","Eta_Fit_Data_PbPb_2760GeV_6080V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4080TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_3050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_3050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3050V0M","Eta_Fit_Data_PbPb_2760GeV_3050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4060TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M","Eta_Fit_Data_PbPb_2760GeV_4060V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_6080TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_6080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M","Eta_Fit_Data_PbPb_2760GeV_6080V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4080TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_3050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_3050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3050V0M","Eta_Fit_Data_PbPb_2760GeV_3050V0M");
}
}
if (trainConfig == 59 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4060TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M","Eta_Fit_Data_PbPb_2760GeV_4060V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_6080TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_6080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M","Eta_Fit_Data_PbPb_2760GeV_6080V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4080TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_3050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_3050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3050V0M","Eta_Fit_Data_PbPb_2760GeV_3050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4060TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4060V0M","Eta_Fit_Data_PbPb_2760GeV_4060V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_6080TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_6080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_6080V0M","Eta_Fit_Data_PbPb_2760GeV_6080V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4080TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4080TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_1020V0M","Eta_Fit_Data_PbPb_2760GeV_1020V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_3050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_3050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3050V0M","Eta_Fit_Data_PbPb_2760GeV_3050V0M");
}
}
if (trainConfig == 60 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2030TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2030TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2030V0M","Eta_Fit_Data_PbPb_2760GeV_2030V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_3040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_3040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3040V0M","Eta_Fit_Data_PbPb_2760GeV_3040V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4050V0M","Eta_Fit_Data_PbPb_2760GeV_4050V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_5060TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_5060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_5060V0M","Eta_Fit_Data_PbPb_2760GeV_5060V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2030TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2030TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2030V0M","Eta_Fit_Data_PbPb_2760GeV_2030V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_3040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_3040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3040V0M","Eta_Fit_Data_PbPb_2760GeV_3040V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_4050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_4050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4050V0M","Eta_Fit_Data_PbPb_2760GeV_4050V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_5060TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_5060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_5060V0M","Eta_Fit_Data_PbPb_2760GeV_5060V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
}
}
if (trainConfig == 61 ){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2030TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2030TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2030V0M","Eta_Fit_Data_PbPb_2760GeV_2030V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_3040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_3040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3040V0M","Eta_Fit_Data_PbPb_2760GeV_3040V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4050V0M","Eta_Fit_Data_PbPb_2760GeV_4050V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_5060TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_5060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_5060V0M","Eta_Fit_Data_PbPb_2760GeV_5060V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2030TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2030TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2030V0M","Eta_Fit_Data_PbPb_2760GeV_2030V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_3040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_3040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_3040V0M","Eta_Fit_Data_PbPb_2760GeV_3040V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_4050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_4050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_4050V0M","Eta_Fit_Data_PbPb_2760GeV_4050V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_5060TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_5060TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_5060V0M","Eta_Fit_Data_PbPb_2760GeV_5060V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
}
}
- if ( trainConfig == 70 || trainConfig == 72 || trainConfig == 74 || trainConfig == 76 || trainConfig == 78 || trainConfig == 80 || trainConfig == 82 || trainConfig == 84 || trainConfig == 86 || trainConfig == 88 || trainConfig == 90 || trainConfig == 92 || trainConfig == 94 || trainConfig == 96 || trainConfig == 98 || trainConfig == 100 || trainConfig == 102 || trainConfig == 104 || trainConfig == 106 || trainConfig == 108){
+ if ( trainConfig == 70 || trainConfig == 72 || trainConfig == 74 || trainConfig == 76 || trainConfig == 78 || trainConfig == 80 || trainConfig == 82 || trainConfig == 84 || trainConfig == 86 || trainConfig == 88 || trainConfig == 90 || trainConfig == 92 || trainConfig == 94 || trainConfig == 96 || trainConfig == 98 || trainConfig == 100 || trainConfig == 102 || trainConfig == 104 || trainConfig == 106 || trainConfig == 108 || trainConfig == 110){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
}
}
- if ( trainConfig == 71 || trainConfig == 73 || trainConfig == 75 || trainConfig == 77 || trainConfig == 79 || trainConfig == 81 || trainConfig == 83 || trainConfig == 85 || trainConfig == 87 || trainConfig == 89 || trainConfig == 91 || trainConfig == 93 || trainConfig == 95 || trainConfig == 97 || trainConfig == 99 || trainConfig == 101 || trainConfig == 103 || trainConfig == 105 || trainConfig == 107 || trainConfig == 109){
+ if ( trainConfig == 71 || trainConfig == 73 || trainConfig == 75 || trainConfig == 77 || trainConfig == 79 || trainConfig == 81 || trainConfig == 83 || trainConfig == 85 || trainConfig == 87 || trainConfig == 89 || trainConfig == 91 || trainConfig == 93 || trainConfig == 95 || trainConfig == 97 || trainConfig == 99 || trainConfig == 101 || trainConfig == 103 || trainConfig == 105 || trainConfig == 107 || trainConfig == 109 || trainConfig == 111){
if (periodName.CompareTo("LHC14a1a") ==0 || periodName.CompareTo("LHC14a1b") ==0 || periodName.CompareTo("LHC14a1c") ==0 ){
- if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
- if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
- if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
- if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
- if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kFALSE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
+ if ( i == 0 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0005TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0005V0M","Eta_Fit_Data_PbPb_2760GeV_0005V0M");
+ if ( i == 1 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0510TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0510V0M","Eta_Fit_Data_PbPb_2760GeV_0510V0M");
+ if ( i == 2 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_0010TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_0010V0M","Eta_Fit_Data_PbPb_2760GeV_0010V0M");
+ if ( i == 3 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2040TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2040V0M","Eta_Fit_Data_PbPb_2760GeV_2040V0M");
+ if ( i == 4 && doWeighting) analysisCuts[i]->SetUseReweightingWithHistogramFromFile(kTRUE, kTRUE, kFALSE,fileNameInputForWeighting, Form("Pi0_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), Form("Eta_Hijing_%s_addSig_PbPb_2760GeV_2050TPC",periodName.Data()), "","Pi0_Fit_Data_PbPb_2760GeV_2050V0M","Eta_Fit_Data_PbPb_2760GeV_2050V0M");
}
}
// if (!fJets) return kTRUE;
// get centrality bin
- Int_t centbin = GetCentBin(fCent);
- //for pp analyses we will just use the first centrality bin
- if (centbin == -1)
- centbin = 0;
+// Int_t centbin = GetCentBin(fCent);
+// //for pp analyses we will just use the first centrality bin
+// if (centbin == -1)
+// centbin = 0;
// get event plane info from event
AliEventplane *aliEP = InputEvent()->GetEventplane();
// need to update entries soon
//Double_t Entries[10] = {centbin, jetPtLocal, jetPtGlobal, jetPtraw, jet->Eta(), jet->Phi(), dEP, fLocalRhoVal, fRhoVal, fEPV0};
- Double_t Entries[9] = {centbin, jetPtLocal, jetPtGlobal, jetPtraw, jet->Phi(), dEP, fLocalRhoVal, fRhoVal, fEPV0};
+ Double_t Entries[9] = {fCent, jetPtLocal, jetPtGlobal, jetPtraw, jet->Phi(), dEP, fLocalRhoVal, fRhoVal, fEPV0};
fhnJetTriggerQA->Fill(Entries); // fill Sparse Histo with entries
// in plane and out of plane histo's
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
+#include "TF1.h"
#include "TFormula.h"
#include "TRandom.h"
fPoolMgr(),
fPool(),
fHistCorr(0x0),
+ fErrorMsg(10),
fOutputList(),
fHist(),
fShortTaskId("jet_prot_corr"),
fCutsPrimTrgConstrain(new AliESDtrackCuts()),
fCutsPrimAss(0x0),
fCutsTwoTrackEff(0.02),
+ fAssFilterMask(1 << 10),
+ fTrgJetEtaMax(0.45),
+ fHadEtaMax(0.8),
fTrgPartPtMin(6.),
fTrgPartPtMax(8.),
fTrgJetPtMin(50.),
fTrgJetPtMax(80.),
- fTrgJetLeadTrkPtMin(5.),
+ fTrgJetLeadTrkPtMin(6.),
+ fTrgJetLeadTrkPtMax(100.),
+ fTrgJetAreaMin(0.6 * TMath::Pi() * 0.2*0.2),
fAssPartPtMin(2.),
fAssPartPtMax(4.),
fTrgAngleToEvPlane(TMath::Pi() / 4.),
}
- fCutsPrimAss->SetEtaRange(-0.9, 0.9);
+ fCutsPrimAss->SetEtaRange(-fHadEtaMax, fHadEtaMax);
fCutsPrimAss->SetPtRange(0.15, 1E+15);
// track cuts for triggers
fCutsPrimTrg = new AliESDtrackCuts(*fCutsPrimAss);
// azimuthal modulation for triggers
- fTrgJetPhiModCent->SetParameter(0, .02);
- fTrgJetPhiModSemi->SetParameter(0, .02);
+ fTrgJetPhiModCent->SetParameter(0, .10);
+ fTrgJetPhiModSemi->SetParameter(0, .10);
fTrgHadPhiModCent->SetParameter(0, .04);
fTrgHadPhiModSemi->SetParameter(0, .10);
AddHistogram(ID(kHistPhiTrgJetEvPlane), "trg jet;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiTrgHadEvPlane), "trg had;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiAssHadEvPlane), "ass had;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiAssProtEvPlane), "ass prot;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiAssHadVsEvPlane), "ass had;#Psi_{ev};#varphi;centrality",
100, -0. * TMath::Pi(), 1. * TMath::Pi(),
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiTrgJetEvPlane3), "trg jet;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiTrgHadEvPlane3), "trg had;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiAssHadEvPlane3), "ass had;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
AddHistogram(ID(kHistPhiAssProtEvPlane3), "ass prot;#varphi - #Psi_{ev};centrality",
100, -0. * TMath::Pi(), 2. * TMath::Pi(),
- 100., 0., 100.);
+ 100, 0., 100.);
for (Int_t iCorr = 0; iCorr < kCorrLast; ++iCorr) {
for (Int_t iCl = 0; iCl < kClLast; ++iCl) {
Double_t rndTOFmismatch = AliTOFPIDResponse::GetMismatchRandomValue(trk->Eta());
if(IsClass(kClCentral)) {
- FillH2(kHistNsigmaTOFmismatch, p, (rndTOFmismatch - expTOF) / expSigmaTOF);
+ FillH2(kHistNsigmaTOFmismatch, trk->P(), (rndTOFmismatch - expTOF) / expSigmaTOF);
FillH2(kHistDeltaTOF, trk->P(), deltaTOF * 1.e-3); // ps -> ns
}
if(IsClass(kClSemiCentral)) {
- FillH2(kHistNsigmaTOFmismatchSemi, p, (rndTOFmismatch - expTOF) / expSigmaTOF);
+ FillH2(kHistNsigmaTOFmismatchSemi, trk->P(), (rndTOFmismatch - expTOF) / expSigmaTOF);
FillH2(kHistDeltaTOFSemi, trk->P(), deltaTOF * 1.e-3); // ps -> ns
}
}
const Int_t nTracksAODAss = fAODEvent->GetNumberOfTracks();
for (Int_t iTrack = 0; iTrack < nTracksAODAss; ++iTrack) {
AliAODTrack *trk = fAODEvent->GetTrack(iTrack);
- // 4: track cuts esdTrackCutsH ???
- // 10: R_AA cuts
- if (trk->TestFilterMask(1 << 4))
+ if (trk->TestFilterMask(fAssFilterMask))
fPrimTrackArrayAss->Add(trk);
}
if (AODEvent())
fJetArray = dynamic_cast<TClonesArray*> (AODEvent()->FindListObject(fJetBranchName));
if (!fJetArray) {
- printf("no jet branch \"%s\" found, in the AODs are:\n", fJetBranchName);
+ if (fErrorMsg > 0) {
+ AliError(Form("no jet branch \"%s\" found, in the AODs are:", fJetBranchName));
+ --fErrorMsg;
+ }
if (fDebug > 0) {
fAODEvent->GetList()->Print();
if (AODEvent())
return eventGood;
}
-Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(AliVTrack *trg)
+Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(const AliVTrack *trg)
{
// check pt interval
Bool_t acceptPt =
return (acceptPt && acceptOrientation);
}
-AliVTrack* AliAnalysisTaskJetProtonCorr::GetLeadingTrack(AliAODJet *jet) const
+AliVTrack* AliAnalysisTaskJetProtonCorr::GetLeadingTrack(const AliAODJet *jet) const
{
// return leading track within a jet
return (AliAODTrack*) jet->GetRefTracks()->At(iLeadingTrack);
}
-Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(AliAODJet *trg)
+Bool_t AliAnalysisTaskJetProtonCorr::AcceptTrigger(const AliAODJet *trg)
{
// restrict eta
- if (TMath::Abs(trg->Eta()) > .5)
+ if (TMath::Abs(trg->Eta()) > fTrgJetEtaMax)
+ return kFALSE;
+
+ // reject too small jets
+ if (trg->EffectiveAreaCharged() < fTrgJetAreaMin)
return kFALSE;
// require hard leading track
// (leading track biased jet sample)
- if (GetLeadingTrack(trg)->Pt() < fTrgJetLeadTrkPtMin)
+ // but reject jets with too high pt constituents
+ const Float_t ptLeadTrack = GetLeadingTrack(trg)->Pt();
+ if ((ptLeadTrack < fTrgJetLeadTrkPtMin) ||
+ (ptLeadTrack > fTrgJetLeadTrkPtMax))
return kFALSE;
// check for jet orientation w.r.t. event plane
Bool_t acceptOrientation = IsSemiCentral() ?
AcceptAngleToEvPlane(trg->Phi(), GetEventPlaneAngle()) :
kTRUE;
+
// check for jet pt
Bool_t acceptPt =
(trg->Pt() >= fTrgJetPtMin) &&
return (acceptPt && acceptOrientation);
}
-Bool_t AliAnalysisTaskJetProtonCorr::AcceptAssoc(AliVTrack *trk)
+Bool_t AliAnalysisTaskJetProtonCorr::AcceptAssoc(const AliVTrack *trk) const
{
if ((trk->Pt() > fAssPartPtMin) && (trk->Pt() < fAssPartPtMax) &&
(fPIDResponse->CheckPIDStatus(AliPIDResponse::kTPC, trk) == AliPIDResponse::kDetPidOk) &&
return kFALSE;
}
-Bool_t AliAnalysisTaskJetProtonCorr::IsProton(AliVTrack *trk)
+Bool_t AliAnalysisTaskJetProtonCorr::IsProton(const AliVTrack *trk) const
{
Double_t nSigmaProtonTPC = fPIDResponse->NumberOfSigmasTPC(trk, AliPID::kProton);
Double_t nSigmaProtonTOF = fPIDResponse->NumberOfSigmasTOF(trk, AliPID::kProton);
return kFALSE;
}
-Bool_t AliAnalysisTaskJetProtonCorr::AcceptAngleToEvPlane(Float_t phi, Float_t psi)
+Bool_t AliAnalysisTaskJetProtonCorr::AcceptAngleToEvPlane(Float_t phi, Float_t psi) const
{
Float_t deltaPhi = phi - psi;
while (deltaPhi < 0.)
Float_t AliAnalysisTaskJetProtonCorr::GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1,
Float_t phi2, Float_t pt2, Float_t charge2,
- Float_t radius, Float_t bSign)
+ Float_t radius, Float_t bSign) const
{
// calculates dphistar
// from AliUEHistograms
}
-Bool_t AliAnalysisTaskJetProtonCorr::AcceptTwoTracks(AliVParticle *trgPart, AliVParticle *assPart)
+Bool_t AliAnalysisTaskJetProtonCorr::AcceptTwoTracks(const AliVParticle *trgPart, const AliVParticle *assPart) const
{
// apply two track pair cut
do {
trgJetPhi = fTrgJetPhiModSemi->GetRandom();
} while (!AcceptAngleToEvPlane(trgJetPhi, 0));
- trgJetPhi += fEventPlaneAngle;
- if (trgJetPhi < 0.)
- trgJetPhi += 2. * TMath::Pi();
- else if (trgJetPhi > 2. * TMath::Pi())
- trgJetPhi -= 2. * TMath::Pi();
}
else {
trgJetPhi = fTrgJetPhiModCent->GetRandom();
}
+ trgJetPhi += fEventPlaneAngle;
+ if (trgJetPhi < 0.)
+ trgJetPhi += 2. * TMath::Pi();
+ else if (trgJetPhi > 2. * TMath::Pi())
+ trgJetPhi -= 2. * TMath::Pi();
// generate one trigger particle
TLorentzVector *trgJet = new TLorentzVector();
do {
trgHadPhi = fTrgHadPhiModSemi->GetRandom();
} while (!AcceptAngleToEvPlane(trgHadPhi, 0));
- trgHadPhi += fEventPlaneAngle;
- if (trgHadPhi < 0.)
- trgHadPhi += 2. * TMath::Pi();
- else if (trgHadPhi > 2. * TMath::Pi())
- trgHadPhi -= 2. * TMath::Pi();
}
else {
trgHadPhi = fTrgHadPhiModCent->GetRandom();
}
+ trgHadPhi += fEventPlaneAngle;
+ if (trgHadPhi < 0.)
+ trgHadPhi += 2. * TMath::Pi();
+ else if (trgHadPhi > 2. * TMath::Pi())
+ trgHadPhi -= 2. * TMath::Pi();
// generate one trigger particle
TLorentzVector *trgHad = new TLorentzVector();
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
+#include "TF1.h"
#include "AliLog.h"
#define ID(x) x, #x
#define LAB(x) x + 1, #x
-class TF1;
class TList;
class TClonesArray;
class AliOADBContainer;
void SetParamsTOF();
// task configuration
- void SetJetBranchName(const char* const branchName) { strncpy(fJetBranchName, branchName, fgkStringLength-1); }
+ void SetJetBranchName(const char* branchName) { strncpy(fJetBranchName, branchName, fgkStringLength-1); }
const char* GetJetBranchName() const { return fJetBranchName; }
void SetPtThrPart(Float_t minPt, Float_t maxPt) { fTrgPartPtMin = minPt; fTrgPartPtMax = maxPt; }
Float_t GetPtMinAss() const { return fAssPartPtMin; }
Float_t GetPtMaxAss() const { return fAssPartPtMax; }
- void SetTrackCutsAss(AliESDtrackCuts cuts) { *fCutsPrimAss = cuts; }
- void SetTrackCutsTrg(AliESDtrackCuts cuts) { *fCutsPrimTrg = cuts; }
- void SetTrackCutsTrgConstrain(AliESDtrackCuts cuts) { *fCutsPrimTrgConstrain = cuts; }
+ void SetTrackCutsAss(const AliESDtrackCuts &cuts) { *fCutsPrimAss = cuts; }
+ void SetTrackCutsTrg(const AliESDtrackCuts &cuts) { *fCutsPrimTrg = cuts; }
+ void SetTrackCutsTrgConstrain(const AliESDtrackCuts &cuts) { *fCutsPrimTrgConstrain = cuts; }
void SetUseEvplaneV0(Bool_t usev0 = kTRUE) { fUseEvplaneV0 = usev0; }
Bool_t GetUseEvplaneV0() const { return fUseEvplaneV0; }
+ void SetJetV2(Float_t v2Cent, Float_t v2Semi) {
+ fTrgJetPhiModCent->SetParameter(0, v2Cent);
+ fTrgJetPhiModSemi->SetParameter(0, v2Semi);
+ }
+ void SetHadV2(Float_t v2Cent, Float_t v2Semi) {
+ fTrgHadPhiModCent->SetParameter(0, v2Cent);
+ fTrgHadPhiModSemi->SetParameter(0, v2Semi);
+ }
+
+ void SetLeadingTrackPtMin(Float_t pt) { fTrgJetLeadTrkPtMin = pt; }
+ void SetLeadingTrackPtMax(Float_t pt) { fTrgJetLeadTrkPtMax = pt; }
+
+ void SetJetAreaMin(Float_t area) { fTrgJetAreaMin = area; }
+
+ void SetFilterMask(Int_t mask) { fAssFilterMask = mask; }
+ Int_t GetFilterMask() const { return fAssFilterMask; }
+
+ void SetErrorCount(Int_t cnt) { fErrorMsg = cnt; }
+ Int_t GetErrorCount() const { return fErrorMsg; }
+
void PrintTask(Option_t *option, Int_t indent) const;
static Double_t TOFsignal(Double_t *x, Double_t *par)
AliHistCorr **fHistCorr; //! [kCorrLast*kEvLast*kClLast]; //!
+ Int_t fErrorMsg; //! remaining number of error messages to be printed
+
Bool_t DetectTriggers();
void MarkTrigger(Trigger_t trg) { fTriggerMask |= (1 << trg); }
Bool_t IsTrigger(Trigger_t trg) const { return (fTriggerMask & (1 << trg)); }
Float_t GetCentrality() const { return fCentrality; }
Float_t GetEventPlaneAngle() const { return fEventPlaneAngle; }
AliPIDResponse* GetPID() const { return fPIDResponse; }
- Bool_t IsCentral() { return ((fCentrality >= 0.) && (fCentrality <= 10.)); }
- Bool_t IsSemiCentral() { return ((fCentrality >= 30.) && (fCentrality <= 50.)); }
+ Bool_t IsCentral() const { return ((fCentrality >= 0.) && (fCentrality <= 10.)); }
+ Bool_t IsSemiCentral() const { return ((fCentrality >= 30.) && (fCentrality <= 50.)); }
- AliVTrack* GetLeadingTrack(AliAODJet *jet) const;
+ AliVTrack* GetLeadingTrack(const AliAODJet *jet) const;
Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1,
Float_t phi2, Float_t pt2, Float_t charge2,
- Float_t radius, Float_t bSign);
+ Float_t radius, Float_t bSign) const;
- Bool_t AcceptTrigger(AliVTrack *trg);
- Bool_t AcceptTrigger(AliAODJet *trg);
- Bool_t AcceptAssoc(AliVTrack *trk);
- Bool_t IsProton(AliVTrack *trk);
- Bool_t AcceptAngleToEvPlane(Float_t phi, Float_t psi);
- Bool_t AcceptTwoTracks(AliVParticle *trgPart, AliVParticle *assPart);
+ Bool_t AcceptTrigger(const AliVTrack *trg);
+ Bool_t AcceptTrigger(const AliAODJet *trg);
+ Bool_t AcceptAssoc(const AliVTrack *trk) const;
+ Bool_t IsProton(const AliVTrack *trk) const;
+ Bool_t AcceptAngleToEvPlane(Float_t phi, Float_t psi) const;
+ Bool_t AcceptTwoTracks(const AliVParticle *trgPart, const AliVParticle *assPart) const;
TObjArray* CloneTracks(TObjArray *tracks) const;
AliESDtrackCuts *fCutsPrimAss; // track cuts for primary particles (associate)
Float_t fCutsTwoTrackEff;
+ UInt_t fAssFilterMask;
+ Float_t fTrgJetEtaMax;
+ Float_t fHadEtaMax;
Float_t fTrgPartPtMin;
Float_t fTrgPartPtMax;
Float_t fTrgJetPtMin;
Float_t fTrgJetPtMax;
Float_t fTrgJetLeadTrkPtMin;
+ Float_t fTrgJetLeadTrkPtMax;
+ Float_t fTrgJetAreaMin;
Float_t fAssPartPtMin;
Float_t fAssPartPtMax;
Float_t fTrgAngleToEvPlane;
//________________________________________________________________________
AliAnalysisTaskPID::AliAnalysisTaskPID()
: AliAnalysisTaskPIDV0base()
+ , fRun(-1)
, fPIDcombined(new AliPIDCombined())
, fInputFromOtherTask(kFALSE)
, fDoPID(kTRUE)
, fGenRespPrDeltaPi(new Double_t[fgkMaxNumGenEntries])
, fGenRespPrDeltaPr(new Double_t[fgkMaxNumGenEntries])
*/
+ , fhMaxEtaVariation(0x0)
, fhEventsProcessed(0x0)
, fhEventsTriggerSel(0x0)
, fhEventsTriggerSelVtxCut(0x0)
//________________________________________________________________________
AliAnalysisTaskPID::AliAnalysisTaskPID(const char *name)
: AliAnalysisTaskPIDV0base(name)
+ , fRun(-1)
, fPIDcombined(new AliPIDCombined())
, fInputFromOtherTask(kFALSE)
, fDoPID(kTRUE)
, fGenRespPrDeltaPi(new Double_t[fgkMaxNumGenEntries])
, fGenRespPrDeltaPr(new Double_t[fgkMaxNumGenEntries])
*/
+ , fhMaxEtaVariation(0x0)
, fhEventsProcessed(0x0)
, fhEventsTriggerSel(0x0)
, fhEventsTriggerSelVtxCut(0x0)
fGenRespPrDeltaPrimePi = 0x0;
fGenRespPrDeltaPrimePr = 0x0;
+ delete fhMaxEtaVariation;
+ fhMaxEtaVariation = 0x0;
+
/*OLD with deltaSpecies
delete [] fGenRespElDeltaEl;
delete [] fGenRespElDeltaKa;
}
+//________________________________________________________________________
+Bool_t AliAnalysisTaskPID::CalculateMaxEtaVariationMapFromPIDResponse()
+{
+ // Calculate the maximum deviation from unity of the eta correction factors for each row in 1/dEdx(splines)
+ // from the eta correction map of the TPCPIDResponse. The result is stored in fhMaxEtaVariation.
+
+ if (!fPIDResponse) {
+ AliError("No PID response!");
+ return kFALSE;
+ }
+
+ delete fhMaxEtaVariation;
+
+ const TH2D* hEta = fPIDResponse->GetTPCResponse().GetEtaCorrMap();
+ if (!hEta) {
+ AliError("No eta correction map!");
+ return kFALSE;
+ }
+
+ // Take binning from hEta in Y for fhMaxEtaVariation
+ fhMaxEtaVariation = hEta->ProjectionY("hMaxEtaVariation");
+ fhMaxEtaVariation->SetDirectory(0);
+ fhMaxEtaVariation->Reset();
+
+ // For each bin in 1/dEdx, loop of all tanTheta bins and find the maximum deviation from unity.
+ // Store the result in fhMaxEtaVariation
+
+ for (Int_t binY = 1; binY <= fhMaxEtaVariation->GetNbinsX(); binY++) {
+ Double_t maxAbs = -1;
+ for (Int_t binX = 1; binX <= hEta->GetNbinsX(); binX++) {
+ Double_t curr = TMath::Abs(hEta->GetBinContent(binX, binY) - 1.);
+ if (curr > maxAbs)
+ maxAbs = curr;
+ }
+
+ if (maxAbs < 1e-12) {
+ AliError(Form("Maximum deviation from unity is zero for 1/dEdx = %f (bin %d)", hEta->GetYaxis()->GetBinCenter(binY), binY));
+ delete fhMaxEtaVariation;
+ return kFALSE;
+ }
+
+ fhMaxEtaVariation->SetBinContent(binY, maxAbs);
+ }
+
+ printf("AliAnalysisTaskPID: Calculated max eta variation.\n");
+
+ return kTRUE;
+}
+
+
//________________________________________________________________________
void AliAnalysisTaskPID::UserCreateOutputObjects()
{
if(fDebug > 1)
printf("File: %s, Line: %d: UserExec\n", (char*)__FILE__, __LINE__);
+ Int_t run = InputEvent()->GetRunNumber();
+
+ if (run != fRun){
+ // If systematics on eta is investigated, need to calculate the maxEtaVariationMap
+ if ((TMath::Abs(fSystematicScalingEtaCorrectionLowMomenta - 1.0) > fgkEpsilon) ||
+ (TMath::Abs(fSystematicScalingEtaCorrectionHighMomenta - 1.0) > fgkEpsilon)) {
+ if (!CalculateMaxEtaVariationMapFromPIDResponse())
+ AliFatal("Systematics on eta correction requested, but failed to calculate max eta varation map!");
+ }
+ }
+
+ fRun = run;
+
// No processing of event, if input is fed in directly from another task
if (fInputFromOtherTask)
return;
}
+//_____________________________________________________________________________
+Double_t AliAnalysisTaskPID::GetMaxEtaVariation(Double_t dEdxSplines)
+{
+ // Returns the maximum eta variation (i.e. deviation of eta correction factor from unity) for the
+ // given (spline) dEdx
+
+ if (dEdxSplines < 1. || !fhMaxEtaVariation) {
+ Printf("Error GetMaxEtaVariation: No map or invalid dEdxSplines (%f)!", dEdxSplines);
+ return 999.;
+ }
+
+ Int_t bin = fhMaxEtaVariation->GetXaxis()->FindFixBin(1. / dEdxSplines);
+
+ if (bin == 0)
+ bin = 1;
+ if (bin > fhMaxEtaVariation->GetXaxis()->GetNbins())
+ bin = fhMaxEtaVariation->GetXaxis()->GetNbins();
+
+ return fhMaxEtaVariation->GetBinContent(bin);
+}
+
+
//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::GetRandomParticleTypeAccordingToParticleFractions(Double_t trackPt, Double_t jetPt,
Double_t centralityPercentile,
Double_t etaCorrEl = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxEl) : 1.;
Double_t etaCorrKa = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxKa) : 1.;
Double_t etaCorrPi = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxPi) : 1.;
- Double_t etaCorrMu = fTakeIntoAccountMuons && !fPIDResponse->UseTPCEtaCorrection() ?
+ Double_t etaCorrMu = fTakeIntoAccountMuons && fPIDResponse->UseTPCEtaCorrection() ?
fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxMu) : 1.;
Double_t etaCorrPr = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxPr) : 1.;
+ fSystematicScalingEtaCorrectionHighMomenta * fractionHighMomentumScaleFactor;
}
+ Double_t maxEtaVariationEl = GetMaxEtaVariation(dEdxEl);
+ etaCorrEl = etaCorrEl * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrEl - 1.0) / maxEtaVariationEl);
+
+ Double_t maxEtaVariationKa = GetMaxEtaVariation(dEdxKa);
+ etaCorrKa = etaCorrKa * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrKa - 1.0) / maxEtaVariationKa);
+
+ Double_t maxEtaVariationPi = GetMaxEtaVariation(dEdxPi);
+ etaCorrPi = etaCorrPi * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrPi - 1.0) / maxEtaVariationPi);
+
+ if (fTakeIntoAccountMuons) {
+ Double_t maxEtaVariationMu = GetMaxEtaVariation(dEdxMu);
+ etaCorrMu = etaCorrMu * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrMu - 1.0) / maxEtaVariationMu);
+ }
+ else
+ etaCorrMu = 1.0;
+
+ Double_t maxEtaVariationPr = GetMaxEtaVariation(dEdxPr);
+ etaCorrPr = etaCorrPr * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrPr - 1.0) / maxEtaVariationPr);
+
+
+ /*OLD
etaCorrEl = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrEl - 1.0);
etaCorrKa = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrKa - 1.0);
etaCorrPi = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrPi - 1.0);
etaCorrMu = fTakeIntoAccountMuons ? (1.0 + usedSystematicScalingEtaCorrection * (etaCorrMu - 1.0)) : 1.0;
etaCorrPr = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrPr - 1.0);
+ */
}
// Get the multiplicity correction factors for the (modified) expected dEdx
void SetSystematicScalingMultCorrection(Double_t scaleFactor)
{ fSystematicScalingMultCorrection = scaleFactor; CheckDoAnyStematicStudiesOnTheExpectedSignal(); };
+ Double_t GetMaxEtaVariation(Double_t dEdxSplines);
+ Bool_t CalculateMaxEtaVariationMapFromPIDResponse();
+
void CleanupParticleFractionHistos();
Bool_t GetParticleFraction(Double_t trackPt, Double_t jetPt, Double_t multiplicity,
AliPID::EParticleType species, Double_t& fraction, Double_t& fractionErrorStat,
private:
static const Double_t fgkOneOverSqrt2; // = 1. / TMath::Sqrt2();
+ Int_t fRun; // Current run number
AliPIDCombined* fPIDcombined; //! PID combined object
Bool_t fInputFromOtherTask; // If set to kTRUE, no events are processed and the input must be fed in from another task. If set to kFALSE, normal event processing
Double_t* fGenRespPrDeltaPr; //! Generated responses for a single track
*/
+ TH1D* fhMaxEtaVariation; //! Histo holding the maximum deviation of the eta correction factor from unity vs. 1/dEdx(splines)
+
TH1D* fhEventsProcessed; //! Histo holding the number of processed events (i.e. passing trigger selection, vtx and zvtx cuts
TH1D* fhEventsTriggerSel; //! Histo holding the number of events passing trigger selection
TH1D* fhEventsTriggerSelVtxCut; //! Histo holding the number of events passing trigger selection and vtx cut
AliAnalysisTaskPID(const AliAnalysisTaskPID&); // not implemented
AliAnalysisTaskPID& operator=(const AliAnalysisTaskPID&); // not implemented
- ClassDef(AliAnalysisTaskPID, 17);
+ ClassDef(AliAnalysisTaskPID, 18);
};
};
static THnSparseD* GetTHn(const TString name);
- static void FillTHn(THnSparseD * hh, Double_t jetpt, const AliAODTrack * trackk, AliAODEvent* aodevt, const Int_t tofmode);
+ static void FillTHn(THnSparseD * hh, Double_t jetpt, const AliAODTrack * trackk, AliAODEvent* aodevt, Int_t tofmode);
static Bool_t TPCCutPIDN(const AliAODTrack * track);
static Bool_t TPCCutMIGeo(const AliAODTrack * track, const AliVEvent* evt, TTreeStream * streamer=0x0);
static Double_t Xmax(){return 2;}
static Int_t Nx(){return 300;}
- static Int_t PDG2Type(const Int_t pdg);
+ static Int_t PDG2Type(Int_t pdg);
- static Int_t TOFType(const AliAODTrack * trackptr, const Int_t tofmode);
+ static Int_t TOFType(const AliAODTrack * trackptr, Int_t tofmode);
static Int_t TPCType(const AliAODTrack * trackptr);
- static Int_t CombineTPCTOF(const Int_t ktpc, const Int_t ktof);
+ static Int_t CombineTPCTOF(Int_t ktpc, Int_t ktof);
//static Bool_t HMPIDAcceptance(const AliAODTrack *track);
//static Bool_t HMPIDQA(const AliAODTrack *track);
// //
///////////////////////////////////////////////////////////
-using std::cout;
-using std::endl;
ClassImp(AliAnalysisTaskAntiHe4)
fHistHelium4PtAsoSec(0),
fHistAntiHelium4PtAso(0),
fTree(0),
- fOutputContainer(0)
+ fOutputContainer(0),
+ fEvnt(0),
+ fItrk(0)
{
// default Constructor
fHistHelium4PtAsoSec(0),
fHistAntiHelium4PtAso(0),
fTree(0),
- fOutputContainer(0)
+ fOutputContainer(0),
+ fEvnt(0),
+ fItrk(0)
{
// Constructor
fESDtrackCuts->SetRequireTPCRefit(kTRUE);
//fESDtrackCuts->SetRequireITSRefit(kTRUE);
fESDtrackCuts->SetMinNClustersITS(2);
- fESDtrackCuts->SetEtaRange(-0.8,0.8);
+ fESDtrackCuts->SetEtaRange(-1.0,1.0);
//
// cuts for final plots
//
//------------ Tree and branch definitions ----------------//
- fTree = new TTree("tree", " alpha tree");
-
+ fTree = new TTree("tree", "alpha tree");
//------------ Event variables ------------//
- fTree->Branch("Name",Name,"Name/C");
- fTree->Branch("Evnt",&evnt, "evnt/I");
- fTree->Branch("itrk", &itrk, "itrk/I");
-
+ fTree->Branch("fName",fName,"fName/C");
+ fTree->Branch("fEvnt",&fEvnt, "fEvnt/I");
+ fTree->Branch("fFileName",fFileName,"fFileName/C");
+ fTree->Branch("fEventNumber",fEventNumber,"fEventNumber/I");
+ fTree->Branch("fItrk",&fItrk, "fItrk/I");
//-------------------------------------------//
//----------- Track variables --------------//
-
- fTree->Branch("TrkPtot",TrkPtot,"TrkPtot[itrk]/F");
- fTree->Branch("TPCPtot",TPCPtot,"TPCPtot[itrk]/F");
- fTree->Branch("DeDx",DeDx,"DeDx[itrk]/F");
- fTree->Branch("Sign",Sign,"Sign[itrk]/F");
- fTree->Branch("DCAXY",DCAXY,"DCAXY[itrk]/F");
- fTree->Branch("DCAZ",DCAZ,"DCAZ[itrk]/F");
- fTree->Branch("ITSnCluster",ITSnCluster,"ITSnCluster[itrk]/F");
- fTree->Branch("TPCNsignal",TPCNsignal,"TPCNsignal[itrk]/F");
- fTree->Branch("Mass",Mass,"Mass[itrk]/F");
- //
- fTree->Branch("ITSRefit",ITSRefit,"ITSRefit[itrk]/F");
- fTree->Branch("TOFtime",TOFtime,"TOFtime[itrk]/F");
- fTree->Branch("TOFRefit",TOFRefit,"TOFRefit[itrk]/F");
- fTree->Branch("TOFout",TOFout,"TOFout[itrk]/F");
- //
- fTree->Branch("ITSsignal",ITSsignal,"ITSsignal[itrk]/F");
- fTree->Branch("SharedClusters",SharedClusters,"SharedClusters[itrk]/F");
- fTree->Branch("fFileName",fFileName,"fFileName/C");
- fTree->Branch("fEventNumber",fEventNumber,"fEventNumber/I");
+ fTree->Branch("fEta",fEta,"fEta[fItrk]/D");
+ fTree->Branch("fKinkIndex",fKinkIndex,"fKinkIndex[fItrk]/I");
+ //
+ fTree->Branch("fTPCnCluster",fTPCnCluster,"fTPCnCluster[fItrk]/s");
+ fTree->Branch("fTPCNsignal",fTPCNsignal,"fTPCNsignal[fItrk]/s");
+ fTree->Branch("fChi2PerClusterTPC",fChi2PerClusterTPC,"fChi2PerClusterTPC[fItrk]/D");
+ fTree->Branch("fTPCRefit",fTPCRefit,"fTPCRefit[fItrk]/O");
+ fTree->Branch("fTPCsignal0",fTPCsignal0,"fTPCsignal0[fItrk]/D");
+ fTree->Branch("fTPCsignal1",fTPCsignal1,"fTPCsignal1[fItrk]/D");
+ fTree->Branch("fTPCsignal2",fTPCsignal2,"fTPCsignal2[fItrk]/D");
+ fTree->Branch("fTPCsignal3",fTPCsignal3,"fTPCsignal3[fItrk]/D");
+ fTree->Branch("fTPCSharedClusters",fTPCSharedClusters,"fTPCSharedClusters[fItrk]/I");
+ fTree->Branch("fTPCNclsIter1",fTPCNclsIter1,"fTPCNclsIter1[fItrk]/s");
+ //
+ fTree->Branch("fITSsignal",fITSsignal,"fITSsignal[fItrk]/D");
+ fTree->Branch("fITSnCluster",fITSnCluster,"fITSnCluster[fItrk]/I");
+ fTree->Branch("fChi2PerClusterITS",fChi2PerClusterITS,"fChi2PerClusterITS[fItrk]/D");
+ fTree->Branch("fITSRefit",fITSRefit,"fITSRefit[fItrk]/O");
//
- fTree->Branch("fAssociated",fAssociated,"fAssociated[itrk]/O");
- fTree->Branch("fTrackPt",fTrackPt,"fTrackPt[itrk]/F");
+ fTree->Branch("fTOFtime",fTOFtime,"fTOFtime[fItrk]/O");
+ fTree->Branch("fTOFRefit",fTOFRefit,"fTOFRefit[fItrk]/O");
+ fTree->Branch("fTOFout",fTOFout,"fTOFout[fItrk]/O");
+ fTree->Branch("fTOFsignalDz",fTOFsignalDz,"fTOFsignalDz[fItrk]/D");
+ fTree->Branch("fTOFsignalDx",fTOFsignalDx,"fTOFsignalDx[fItrk]/D");
+ //
+ fTree->Branch("fDCAXY",fDCAXY,"fDCAXY[fItrk]/F");
+ fTree->Branch("fDCAZ",fDCAZ,"fDCAZ[fItrk]/F");
+ //
+ fTree->Branch("fTrkPtot",fTrkPtot,"fTrkPtot[fItrk]/D");
+ fTree->Branch("fTPCPtot",fTPCPtot,"fTPCPtot[fItrk]/D");
+ fTree->Branch("fTrackPt",fTrackPt,"fTrackPt[fItrk]/D");
+ fTree->Branch("fDeDx",fDeDx,"fDeDx[fItrk]/D");
+ fTree->Branch("fSign",fSign,"fSign[fItrk]/D");
+ fTree->Branch("fMass",fMass,"Mass[fItrk]/F");
+ //
+ fTree->Branch("fAssociated",fAssociated,"fAssociated[fItrk]/O");
}
}
}
//
- if (!fTriggerFired[0] && !fTriggerFired[1] && !fTriggerFired[2]) return; // select only events which pass kMB, kCentral, kSemiCentral
- //
fHistCentralityClass10->Fill(centralityClass10);
fHistCentralityPercentile->Fill(centralityPercentile);
//
}
//
Float_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z for th // for Anti-Alpha
- evnt = fESD->GetEventNumberInFile();
- sscanf(fInputHandler->GetTree()->GetCurrentFile()->GetName(),"%s", Name);
- itrk = 0;
+ fEvnt = fESD->GetEventNumberInFile();
+ sscanf(fInputHandler->GetTree()->GetCurrentFile()->GetName(),"%s", fName);
+ fItrk = 0;
//
Int_t runNumber = 0;
runNumber = fESD->GetRunNumber();
Bool_t fillTree = kFALSE;
// Track loop to fill the spectram
for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
- //
+
+ fEventNumber[fItrk] = -1;
+
+ fEta[fItrk] = -2;
+ fTPCNsignal[fItrk] = -1;
+ fTPCnCluster[fItrk] = -1;
+ fChi2PerClusterTPC[fItrk] = -1;
+ fTPCRefit[fItrk] = kFALSE;
+ fTPCsignal0[fItrk] = -1;
+ fTPCsignal1[fItrk] = -1;
+ fTPCsignal2[fItrk] = -1;
+ fTPCsignal3[fItrk] = -1;
+ fTPCSharedClusters[fItrk] = -1;
+ fTPCNclsIter1[fItrk] = -1;
+
+ fITSsignal[fItrk] = -1;
+ fITSnCluster[fItrk] = -1;
+ fChi2PerClusterITS[fItrk] = -1;
+ fITSRefit[fItrk] = kFALSE;
+
+ fTOFRefit[fItrk] = kFALSE;
+ fTOFtime[fItrk] = kFALSE;
+ fTOFout[fItrk] = kFALSE;
+ fTOFsignalDz[fItrk] = -1;
+ fTOFsignalDx[fItrk] = -1;
+
+ fDCAZ[fItrk] = -1;
+ fDCAXY[fItrk] = -1;
+
+ fTrkPtot[fItrk] = -1;
+ fTPCPtot[fItrk] = -1;
+ fTrackPt[fItrk] = -1;
+ fDeDx[fItrk] = -1;
+ fSign[fItrk] = -2;
+ fMass[fItrk] = -1;
+
+ fAssociated[fItrk] = kFALSE;
+
AliESDtrack* track = dynamic_cast<AliESDtrack*>(fESD->GetTrack(iTracks));
if (!fESDtrackCuts->AcceptTrack(track)) continue;
//
5.04114e-11,
2.13096,
2.38541);
- if (eta < 0.8 && tpcSignal > 120 && tpcSignal > cut && tpcSignal < 1000 && track->GetTPCsignalN() > 60 && dcaZ < 15 && dcaXY < 15 && ptot > 1.0 && ptot < 20) {
+ if (eta < 1.0 && tpcSignal > 120 && tpcSignal > cut && tpcSignal < 1000 && track->GetTPCsignalN() > 60 && dcaZ < 15 && dcaXY < 15 && ptot > 1.0 && ptot < 20) {
//
cout << "AntiAlphaEvent" << " "
<< AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->GetTree()->GetCurrentFile()->GetName() << " "
//
fillTree = kTRUE;
//
- TrkPtot[itrk] = track->P();
- TPCPtot[itrk] = ptot;
- DeDx[itrk] = tpcSignal;
- DCAZ[itrk] = dcaZ;
- TPCNsignal[itrk] = track->GetTPCsignalN();
- ITSnCluster[itrk] = track->GetNcls(0);
- Sign[itrk] = sign;
- DCAXY[itrk] = dcaXY;
- Mass[itrk] = mass;
- //
- ITSsignal[itrk] = track->GetITSsignal();
- SharedClusters[itrk] = shared.CountBits();
+
sscanf(fInputHandler->GetTree()->GetCurrentFile()->GetName(),"%s", fFileName);
- //fFileName[itrk] = fInputHandler->GetTree()->GetCurrentFile()->GetName();
- fEventNumber[itrk] = fESD->GetEventNumberInFile();
- //
- if(status&AliESDtrack::kITSrefit)
- ITSRefit[itrk] = 1;
- else ITSRefit[itrk] = 0;
- //
- if (time < 99998) {
- TOFRefit[itrk] = 1;
- } else {
- TOFRefit[itrk] = 0;
- }
- //itrk++;
- //
+ fEventNumber[fItrk] = fESD->GetEventNumberInFile();
+
+ fEta[fItrk] = eta;
+ fKinkIndex[fItrk] = track->GetKinkIndex(0);
+
+ fTPCNsignal[fItrk] = track->GetTPCsignalN();
+ fTPCnCluster[fItrk] = track->GetTPCNcls();
+ fChi2PerClusterTPC[fItrk] = track->GetTPCchi2()/fTPCnCluster[fItrk];
+ if(status&AliESDtrack::kTPCrefit)
+ fTPCRefit[fItrk] = kTRUE;
+ else fTPCRefit[fItrk] = kFALSE;
+ fTPCsignal0[fItrk] = signal[0];
+ fTPCsignal1[fItrk] = signal[1];
+ fTPCsignal2[fItrk] = signal[2];
+ fTPCsignal3[fItrk] = signal[3];
+ fTPCSharedClusters[fItrk] = shared.CountBits();
+ fTPCNclsIter1[fItrk] = track->GetTPCNclsIter1();
+
+ fITSsignal[fItrk] = track->GetITSsignal();
+ fITSnCluster[fItrk] = track->GetNcls(0);
+ fChi2PerClusterITS[fItrk] = track->GetITSchi2()/fITSnCluster[fItrk];
+ if(status&AliESDtrack::kITSrefit)
+ fITSRefit[fItrk] = kTRUE;
+ else fITSRefit[fItrk] = kFALSE;
+
+
+ if(status&AliESDtrack::kITSrefit)
+ fITSRefit[fItrk] = kTRUE;
+ else fITSRefit[fItrk] = kFALSE;
hasTOFout = status&AliESDtrack::kTOFout;
hasTOFtime = status&AliESDtrack::kTIME;
- //
- TOFtime[itrk] = hasTOFtime;
- TOFout[itrk] = hasTOFout;
+ fTOFtime[fItrk] = hasTOFtime;
+ fTOFout[fItrk] = hasTOFout;
+ fTOFsignalDz[fItrk] = track->GetTOFsignalDz();
+ fTOFsignalDx[fItrk] = track->GetTOFsignalDx();
+
+ fDCAZ[fItrk] = dcaXY;
+ fDCAXY[fItrk] = dcaZ;
+
+ fTrkPtot[fItrk] = track->P();
+ fTPCPtot[fItrk] = ptot;
+ fTrackPt[fItrk] = track->Pt();
+ fDeDx[fItrk] = tpcSignal;
+ fSign[fItrk] = sign;
+ fMass[fItrk] = mass;
if (fMCtrue){ //associated
}
- fAssociated[itrk] = isAssociated;
- fTrackPt[itrk] = track->Pt();
-
- itrk++;
+ fAssociated[fItrk] = isAssociated;
+
+ fItrk++;
}
//
// do pid fill histogram for raw ratios
if(sign<0) {
fHistDeDx->Fill(ptot, track->GetTPCsignal());
if (track->GetTPCsignalN() > 100 &&
- TMath::Abs(track->Eta()) < 0.8 &&
+ TMath::Abs(track->Eta()) < 1.0 &&
signal[3]/signal[1] > 0.6 &&
signal[0]/signal[1] > 0.5 &&
signal[3]/signal[1] < 1.2 &&
fHistHelium4PtGen->Fill(pTGen);
if(isPrimary) fHistHelium4PtGenPrim->Fill(pTGen);
if(isSecondary) fHistHelium4PtGenSec->Fill(pTGen);
- if(eta < 0.8)fHistHelium4PtGenEta->Fill(pTGen);
- if(isPrimary && eta < 0.8)fHistHelium4PtGenPrimEta->Fill(pTGen);
+ if(TMath::Abs(eta) < 1.0)fHistHelium4PtGenEta->Fill(pTGen);
+ if(isPrimary && TMath::Abs(eta) < 1.0)fHistHelium4PtGenPrimEta->Fill(pTGen);
}
//Anti-Alpha
fHistAntiHelium4PtGen->Fill(pTGen);
if(isPrimary) fHistAntiHelium4PtGenPrim->Fill(pTGen);
if(isSecondary) fHistAntiHelium4PtGenSec->Fill(pTGen);
- if(eta < 0.8)fHistAntiHelium4PtGenEta->Fill(pTGen);
+ if(TMath::Abs(eta) < 1.0)fHistAntiHelium4PtGenEta->Fill(pTGen);
}
//
// tree variables
//
- Char_t Name[1000];
- Int_t evnt, itrk;
- //
- Float_t TrkPtot[1000];
- Float_t TPCPtot[1000];
- Float_t DeDx[1000];
- Float_t DCAZ[1000];
- Float_t TPCNsignal[1000];
- Float_t ITSnCluster[1000];
- Float_t Sign[1000];
- Float_t DCAXY[1000];
- Float_t Mass[1000];
- Float_t ITSRefit[1000];
- Float_t TOFRefit[1000];
- Float_t TOFtime[1000];
- Float_t TOFout[1000];
- Float_t ITSsignal[1000];
- Float_t SharedClusters[1000];
- Char_t fFileName[1000];
+ Char_t fName[1000];
+ Int_t fEvnt;
+ Char_t fFileName[1000];
Int_t fEventNumber[1000];
+ //
+ Int_t fItrk;
+ //
+ Double_t fEta[1000];
+ Int_t fKinkIndex[1000];
+ //
+ UShort_t fTPCNsignal[1000];
+ UShort_t fTPCnCluster[1000];
+ Double_t fChi2PerClusterTPC[1000];
+ Bool_t fTPCRefit[1000];
+ Double_t fTPCsignal0[1000];
+ Double_t fTPCsignal1[1000];
+ Double_t fTPCsignal2[1000];
+ Double_t fTPCsignal3[1000];
+ Int_t fTPCSharedClusters[1000];
+ UShort_t fTPCNclsIter1[1000];
+ //
+ Double_t fITSsignal[1000];
+ Int_t fITSnCluster[1000];
+ Double_t fChi2PerClusterITS[1000];
+ Bool_t fITSRefit[1000];
+ //
+ Bool_t fTOFRefit[1000];
+ Bool_t fTOFtime[1000];
+ Bool_t fTOFout[1000];
+ Double_t fTOFsignalDz[1000];
+ Double_t fTOFsignalDx[1000];
+ //
+ Float_t fDCAZ[1000];
+ Float_t fDCAXY[1000];
+ //
+ Double_t fTrkPtot[1000];
+ Double_t fTPCPtot[1000];
+ Double_t fTrackPt[1000];
+ Double_t fDeDx[1000];
+ Double_t fSign[1000];
+ Float_t fMass[1000];
+ //
Bool_t fAssociated[1000];
- Float_t fTrackPt[1000];
-
+
//
//
AliAnalysisTaskAntiHe4(const AliAnalysisTaskAntiHe4&); // not implemented
fHistZedTriggersPerRun(0),fHistCvlnTriggersPerRun(0), fHistMBTriggersPerRun(0),fHistCentralTriggersPerRun(0),fHistSemiCentralTriggersPerRun(0),
fListHist(0),fHistNeventsJPsi(0),fHistTPCsignalJPsi(0),fHistDiLeptonPtJPsi(0),fHistDiElectronMass(0),fHistDiMuonMass(0),fHistDiLeptonMass(0),
fHistNeventsPsi2s(0),fHistPsi2sMassVsPt(0),fHistPsi2sMassCoherent(0),
- fListSystematics(0),fListJPsiLoose(0),fListJPsiTight(0)
+ fListSystematics(0),fListJPsiLoose(0),fListJPsiTight(0),fListPsi2sLoose(0),fListPsi2sTight(0)
{
fHistZedTriggersPerRun(0),fHistCvlnTriggersPerRun(0), fHistMBTriggersPerRun(0),fHistCentralTriggersPerRun(0),fHistSemiCentralTriggersPerRun(0),
fListHist(0),fHistNeventsJPsi(0),fHistTPCsignalJPsi(0),fHistDiLeptonPtJPsi(0),fHistDiElectronMass(0),fHistDiMuonMass(0),fHistDiLeptonMass(0),
fHistNeventsPsi2s(0),fHistPsi2sMassVsPt(0),fHistPsi2sMassCoherent(0),
- fListSystematics(0),fListJPsiLoose(0),fListJPsiTight(0)
+ fListSystematics(0),fListJPsiLoose(0),fListJPsiTight(0),fListPsi2sLoose(0),fListPsi2sTight(0)
{
fHistPsi2sMassVsPt->GetYaxis()->SetTitle("#it{p}_{T} (GeV/#it{c})");
fListHist->Add(fHistPsi2sMassVsPt);
- fHistPsi2sMassCoherent = new TH1D("fHistPsi2sMassAllCoherent","Invariant mass of coherent #psi(2s) candidates",100,3,6);
+ fHistPsi2sMassCoherent = new TH1D("fHistPsi2sMassAllCoherent","Invariant mass of coherent #psi(2s) candidates",50,2.5,5.5);
fHistPsi2sMassCoherent->GetXaxis()->SetTitle("Invariant mass(l^{+}l^{-}#pi^{+}#pi^{-}) (GeV/c)");
fListHist->Add(fHistPsi2sMassCoherent);
TH1D *fHistJPsiDCAxyLoose = new TH1D("JPsiDCAxyLoose","Invariant mass of J/#psi candidates",130,2.1,6.0);
fListJPsiLoose->Add(fHistJPsiDCAxyLoose);
+TH1D *fHistJPsiITShitsLoose = new TH1D("JPsiITShitsLoose","Invariant mass of J/#psi candidates",130,2.1,6.0);
+fListJPsiLoose->Add(fHistJPsiITShitsLoose);
+
+
fListJPsiTight = new TList();
fListJPsiTight->SetOwner();
fListJPsiTight->SetName("JPsiTight");
fListJPsiTight->Add(fHistJPsiDCAxyTight);
+fListPsi2sLoose = new TList();
+fListPsi2sLoose->SetOwner();
+fListPsi2sLoose->SetName("Psi2sLoose");
+fListSystematics->Add(fListPsi2sLoose);
+
+TH1D *fHistPsi2sNClusLoose = new TH1D("Psi2sNClusLoose","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sLoose->Add(fHistPsi2sNClusLoose);
+
+TH1D *fHistPsi2sChi2Loose = new TH1D("Psi2sChi2Loose","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sLoose->Add(fHistPsi2sChi2Loose);
+
+TH1D *fHistPsi2sDCAzLoose = new TH1D("Psi2sDCAzLoose","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sLoose->Add(fHistPsi2sDCAzLoose);
+
+TH1D *fHistPsi2sDCAxyLoose = new TH1D("Psi2sDCAxyLoose","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sLoose->Add(fHistPsi2sDCAxyLoose);
+
+TH1D *fHistPsi2sITShitsLoose = new TH1D("Psi2sITShitsLoose","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sLoose->Add(fHistPsi2sITShitsLoose);
+
+
+fListPsi2sTight = new TList();
+fListPsi2sTight->SetOwner();
+fListPsi2sTight->SetName("Psi2sTight");
+fListSystematics->Add(fListPsi2sTight);
+
+TH1D *fHistPsi2sNClusTight = new TH1D("Psi2sNClusTight","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sTight->Add(fHistPsi2sNClusTight);
+
+TH1D *fHistPsi2sChi2Tight = new TH1D("Psi2sChi2Tight","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sTight->Add(fHistPsi2sChi2Tight);
+
+TH1D *fHistPsi2sDCAzTight = new TH1D("Psi2sDCAzTight","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sTight->Add(fHistPsi2sDCAzTight);
+
+TH1D *fHistPsi2sDCAxyTight = new TH1D("Psi2sDCAxyTight","Invariant mass of #psi(2S) candidates",50,2.5,5.5);
+fListPsi2sTight->Add(fHistPsi2sDCAxyTight);
+
+
}
//_____________________________________________________________________________
AliAODEvent *aod = (AliAODEvent*) InputEvent();
if(!aod) return;
- cout<<"Event number: "<<((TTree*) GetInputData(0))->GetTree()->GetReadEntry()<<endl;
+ //cout<<"Event number: "<<((TTree*) GetInputData(0))->GetTree()->GetReadEntry()<<endl;
fHistNeventsJPsi->Fill(1);
fHistNeventsPsi2s->Fill(1);
TLorentzVector vLepton[4], vPion[4], vCandidate, vDilepton;
Short_t qLepton[4], qPion[4];
- UInt_t nLepton=0, nPion=0, nHighPt=0;
+ UInt_t nLepton=0, nPion=0, nHighPt=0, nSpdHits=0;
Double_t fRecTPCsignal[5], fRecTPCsignalDist;
Int_t fChannel = 0;
Int_t mass[3]={-1,-1,-1};
+ Double_t TrackPt[5]={0,0,0,0,0};
+ Double_t MeanPt = -1;
//Four track loop
AliAODTrack* trk_clone=(AliAODTrack*)trk->Clone("trk_clone");
if(!trk_clone->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
delete trk_clone;
-
if(TMath::Abs(dca[1]) > 2) continue;
+ Double_t cut_DCAxy = 4*(0.0182 + 0.0350/TMath::Power(trk->Pt(),1.01));
+ if(TMath::Abs(dca[0]) > cut_DCAxy) continue;
+ if((trk->HasPointOnITSLayer(0))||(trk->HasPointOnITSLayer(1))) nSpdHits++;
TrackIndex[nGoodTracks] = itr;
+ TrackPt[nGoodTracks] = trk->Pt();
nGoodTracks++;
if(nGoodTracks > 4) break;
nLepton=0; nPion=0; nHighPt=0;
mass[0]= -1; mass[1]= -1, mass[2]= -1;
- if(nGoodTracks == 4){
+ if(nGoodTracks == 4 && nSpdHits>1){
+ MeanPt = GetMedian(TrackPt);
fHistNeventsPsi2s->Fill(6);
for(Int_t i=0; i<4; i++){
AliAODTrack *trk = aod->GetTrack(TrackIndex[i]);
- if(trk->Pt() > 1){
+ if(trk->Pt() > MeanPt){
fRecTPCsignal[nLepton] = trk->GetTPCsignal();
qLepton[nLepton] = trk->Charge();
if(fRecTPCsignal[nLepton] > 40 && fRecTPCsignal[nLepton] < 70){
if((qLepton[0]*qLepton[1] > 0) && (qPion[0]*qPion[1] > 0)) fHistNeventsPsi2s->Fill(10);
if((qLepton[0]*qLepton[1] < 0) && (qPion[0]*qPion[1] < 0)){
fHistNeventsPsi2s->Fill(11);
- if(mass[0] == mass[1]) {
+ if(mass[0] != -1 && mass[1] != -1) {
fHistNeventsPsi2s->Fill(12);
vCandidate = vLepton[0]+vLepton[1]+vPion[0]+vPion[1];
vDilepton = vLepton[0]+vLepton[1];
fHistPsi2sMassVsPt->Fill(vCandidate.M(),vCandidate.Pt());
- if(vCandidate.Pt() < 0.15) fHistPsi2sMassCoherent->Fill(vCandidate.M());
- if(mass[0] == 0) fHistNeventsPsi2s->Fill(13);
- if(mass[0] == 1) fHistNeventsPsi2s->Fill(14);
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-56,2)+TMath::Power(fRecTPCsignal[1]-56,2));
+ if (fRecTPCsignalDist < 3.6*4.0) fChannel = -1;
+ else {
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-78,2)+TMath::Power(fRecTPCsignal[1]-78,2));
+ if (fRecTPCsignalDist < 4.1*4.0) fChannel = 1;
+ }
+
+ if(fChannel == -1) {
+ fHistNeventsPsi2s->Fill(13);
+ if(vDilepton.M() > 3.0 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.15) fHistPsi2sMassCoherent->Fill(vCandidate.M());
+ }
+ if(fChannel == 1){
+ fHistNeventsPsi2s->Fill(14);
+ if(vDilepton.M() > 2.6 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.3) fHistPsi2sMassCoherent->Fill(vCandidate.M());
+ }
}
}
}
Int_t nGoodTracks = 0;
Int_t TrackIndex[5] = {-1,-1,-1,-1,-1};
- TLorentzVector vLepton[4], vCandidate, vDilepton;
- Short_t qLepton[4];
- UInt_t nLepton=0, nHighPt=0;
+ TLorentzVector vLepton[4], vPion[4], vCandidate, vDilepton;
+ Short_t qLepton[4],qPion[4];
+ UInt_t nLepton=0, nPion=0, nHighPt=0;
Double_t fRecTPCsignal[5], fRecTPCsignalDist;
Int_t fChannel = 0;
TParticlePDG *partElectron = pdgdat->GetParticle( 11 );
Double_t electronMass = partElectron->Mass();
- // TParticlePDG *partPion = pdgdat->GetParticle( 211 );
- // Double_t pionMass = partPion->Mass();
+ TParticlePDG *partPion = pdgdat->GetParticle( 211 );
+ Double_t pionMass = partPion->Mass();
-for(Int_t i=0; i<4; i++){
- cout<<"Loose sytematics, cut"<<i<<endl;
+for(Int_t i=0; i<5; i++){
+ //cout<<"Loose sytematics, cut"<<i<<endl;
for(Int_t j=0; j<4; j++){
if(i==j) fJPsiSels[j] = fJPsiSelsLoose[i];
else fJPsiSels[j] = fJPsiSelsMid[j];
if(!(trk->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
if(!(trk->GetStatus() & AliESDtrack::kITSrefit) ) continue;
- if((!trk->HasPointOnITSLayer(0))&&(!trk->HasPointOnITSLayer(1))) continue;
+ if(i!=4){ if((!trk->HasPointOnITSLayer(0))&&(!trk->HasPointOnITSLayer(1))) continue;}
Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0};
AliAODTrack* trk_clone=(AliAODTrack*)trk->Clone("trk_clone");
if(!trk_clone->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
nLepton=0; nHighPt=0;
if(nGoodTracks == 2){
- fHistNeventsJPsi->Fill(6);
for(Int_t k=0; k<2; k++){
AliAODTrack *trk = aod->GetTrack(TrackIndex[k]);
if(trk->Pt() > 1) nHighPt++;
}//loose cuts
for(Int_t i=0; i<4; i++){
- cout<<"Tight sytematics, cut"<<i<<endl;
+ //cout<<"Tight sytematics, cut"<<i<<endl;
for(Int_t j=0; j<4; j++){
if(i==j) fJPsiSels[j] = fJPsiSelsTight[i];
else fJPsiSels[j] = fJPsiSelsMid[j];
nLepton=0; nHighPt=0;
if(nGoodTracks == 2){
- fHistNeventsJPsi->Fill(6);
for(Int_t k=0; k<2; k++){
AliAODTrack *trk = aod->GetTrack(TrackIndex[k]);
if(trk->Pt() > 1) nHighPt++;
}
}//tight cuts
+//---------------------------------------------Psi2s------------------------------------------------------------------------
+
+ Double_t fPsi2sSels[4];
+
+ fPsi2sSels[0] = 50; //min number of TPC clusters
+ fPsi2sSels[1] = 4; //chi2
+ fPsi2sSels[2] = 2; //DCAz
+ fPsi2sSels[3] = 4; // DCAxy 1x
+
+ Double_t fPsi2sSelsMid[4];
+
+ fPsi2sSelsMid[0] = 50; //min number of TPC clusters
+ fPsi2sSelsMid[1] = 4; //chi2
+ fPsi2sSelsMid[2] = 2; //DCAz
+ fPsi2sSelsMid[3] = 4; // DCAxy 1x
+
+ Double_t fPsi2sSelsLoose[4];
+
+ fPsi2sSelsLoose[0] = 60; //min number of TPC clusters
+ fPsi2sSelsLoose[1] = 5; //chi2
+ fPsi2sSelsLoose[2] = 3; //DCAz
+ fPsi2sSelsLoose[3] = 6; // DCAxy 2x
+
+ Double_t fPsi2sSelsTight[4];
+
+ fPsi2sSelsTight[0] = 70; //min number of TPC clusters
+ fPsi2sSelsTight[1] = 3.5; //chi2
+ fPsi2sSelsTight[2] = 1; //DCAz
+ fPsi2sSelsTight[3] = 2; // DCAxy 0.5x
+
+ nGoodTracks = 0; nLepton=0; nHighPt=0; fChannel = 0;
+ Int_t nSpdHits = 0;
+ Double_t TrackPt[5]={0,0,0,0,0};
+ Double_t MeanPt = -1;
+
+for(Int_t i=0; i<5; i++){
+ //cout<<"Loose systematics psi2s, cut"<<i<<endl;
+ for(Int_t j=0; j<4; j++){
+ if(i==j) fJPsiSels[j] = fJPsiSelsLoose[i];
+ else fJPsiSels[j] = fJPsiSelsMid[j];
+ }
+
+ //Two track loop
+ for(Int_t itr=0; itr<aod ->GetNumberOfTracks(); itr++) {
+ AliAODTrack *trk = aod->GetTrack(itr);
+ if( !trk ) continue;
+ if(!(trk->TestFilterBit(1<<0))) continue;
+
+ if(!(trk->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
+ if(!(trk->GetStatus() & AliESDtrack::kITSrefit) ) continue;
+ if((trk->HasPointOnITSLayer(0))||(trk->HasPointOnITSLayer(1))) nSpdHits++;
+ Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0};
+ AliAODTrack* trk_clone=(AliAODTrack*)trk->Clone("trk_clone");
+ if(!trk_clone->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
+ delete trk_clone;
+ Double_t cut_DCAxy = (0.0182 + 0.0350/TMath::Power(trk->Pt(),1.01));
+
+ if(trk->GetTPCNcls() < fJPsiSels[0])continue;
+ if(trk->Chi2perNDF() > fJPsiSels[1])continue;
+ if(TMath::Abs(dca[1]) > fJPsiSels[2]) continue;
+ if(TMath::Abs(dca[0]) > fJPsiSels[3]*cut_DCAxy) continue;
+ if((trk->HasPointOnITSLayer(0))||(trk->HasPointOnITSLayer(1))) nSpdHits++;
+
+ TrackIndex[nGoodTracks] = itr;
+ TrackPt[nGoodTracks] = trk->Pt();
+ nGoodTracks++;
+
+ if(nGoodTracks > 4) break;
+ }//Track loop
+
+ Int_t mass[3]={-1,-1,-1};
+ fChannel = 0;
+ nLepton=0; nHighPt=0;
+
+ if(nGoodTracks == 4){
+ if(i!=4){ if(nSpdHits<2) continue;}
+ MeanPt = GetMedian(TrackPt);
+ for(Int_t k=0; k<4; k++){
+ AliAODTrack *trk = aod->GetTrack(TrackIndex[k]);
+ if(trk->Pt() > MeanPt){
+ fRecTPCsignal[nLepton] = trk->GetTPCsignal();
+ qLepton[nLepton] = trk->Charge();
+ if(fRecTPCsignal[nLepton] > 40 && fRecTPCsignal[nLepton] < 70){
+ vLepton[nLepton].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), muonMass);
+ mass[nLepton] = 0;
+ }
+ if(fRecTPCsignal[nLepton] > 70 && fRecTPCsignal[nLepton] < 100){
+ vLepton[nLepton].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), electronMass);
+ mass[nLepton] = 1;
+ }
+ nLepton++;
+ }
+ else{
+ qPion[nPion] = trk->Charge();
+ vPion[nPion].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), pionMass);
+ nPion++;
+ }
+ }
+ if((qLepton[0]*qLepton[1] < 0) && (qPion[0]*qPion[1] < 0) && mass[0] != -1 && mass[1] != -1){
+ vCandidate = vLepton[0]+vLepton[1]+vPion[0]+vPion[1];
+ vDilepton = vLepton[0]+vLepton[1];
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-56,2)+TMath::Power(fRecTPCsignal[1]-56,2));
+ if (fRecTPCsignalDist < 3.6*4.0) fChannel = -1;
+ else {
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-78,2)+TMath::Power(fRecTPCsignal[1]-78,2));
+ if (fRecTPCsignalDist < 4.1*4.0) fChannel = 1;
+ }
+ if(fChannel == -1) if(vDilepton.M() > 3.0 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.15) ((TH1D*)(fListPsi2sLoose->At(i)))->Fill(vCandidate.M());
+ if(fChannel == 1) if(vDilepton.M() > 2.6 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.3) ((TH1D*)(fListPsi2sLoose->At(i)))->Fill(vCandidate.M());
+ }
+ }
+}//loose cuts
+
+for(Int_t i=0; i<4; i++){
+ //cout<<"Tight systematics psi2s, cut"<<i<<endl;
+ for(Int_t j=0; j<4; j++){
+ if(i==j) fJPsiSels[j] = fJPsiSelsTight[i];
+ else fJPsiSels[j] = fJPsiSelsMid[j];
+ }
+
+ //Two track loop
+ for(Int_t itr=0; itr<aod ->GetNumberOfTracks(); itr++) {
+ AliAODTrack *trk = aod->GetTrack(itr);
+ if( !trk ) continue;
+ if(!(trk->TestFilterBit(1<<0))) continue;
+
+ if(!(trk->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
+ if(!(trk->GetStatus() & AliESDtrack::kITSrefit) ) continue;
+ if((trk->HasPointOnITSLayer(0))||(trk->HasPointOnITSLayer(1))) nSpdHits++;
+ Double_t dca[2] = {0.0,0.0}, cov[3] = {0.0,0.0,0.0};
+ AliAODTrack* trk_clone=(AliAODTrack*)trk->Clone("trk_clone");
+ if(!trk_clone->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
+ delete trk_clone;
+ Double_t cut_DCAxy = (0.0182 + 0.0350/TMath::Power(trk->Pt(),1.01));
+
+ if(trk->GetTPCNcls() < fJPsiSels[0])continue;
+ if(trk->Chi2perNDF() > fJPsiSels[1])continue;
+ if(TMath::Abs(dca[1]) > fJPsiSels[2]) continue;
+ if(TMath::Abs(dca[0]) > fJPsiSels[3]*cut_DCAxy) continue;
+ if((trk->HasPointOnITSLayer(0))||(trk->HasPointOnITSLayer(1))) nSpdHits++;
+
+ TrackIndex[nGoodTracks] = itr;
+ TrackPt[nGoodTracks] = trk->Pt();
+ nGoodTracks++;
+
+ if(nGoodTracks > 4) break;
+ }//Track loop
+
+ Int_t mass[3]={-1,-1,-1};
+ fChannel = 0;
+ nLepton=0; nHighPt=0;
+
+ if(nGoodTracks == 4){
+ if(nSpdHits<2) continue;
+ MeanPt = GetMedian(TrackPt);
+ for(Int_t k=0; k<4; k++){
+ AliAODTrack *trk = aod->GetTrack(TrackIndex[k]);
+ if(trk->Pt() > MeanPt){
+ fRecTPCsignal[nLepton] = trk->GetTPCsignal();
+ qLepton[nLepton] = trk->Charge();
+ if(fRecTPCsignal[nLepton] > 40 && fRecTPCsignal[nLepton] < 70){
+ vLepton[nLepton].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), muonMass);
+ mass[nLepton] = 0;
+ }
+ if(fRecTPCsignal[nLepton] > 70 && fRecTPCsignal[nLepton] < 100){
+ vLepton[nLepton].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), electronMass);
+ mass[nLepton] = 1;
+ }
+ nLepton++;
+ }
+ else{
+ qPion[nPion] = trk->Charge();
+ vPion[nPion].SetPtEtaPhiM(trk->Pt(), trk->Eta(), trk->Phi(), pionMass);
+ nPion++;
+ }
+ }
+ if((qLepton[0]*qLepton[1] < 0) && (qPion[0]*qPion[1] < 0) && mass[0] != -1 && mass[1] != -1){
+ vCandidate = vLepton[0]+vLepton[1]+vPion[0]+vPion[1];
+ vDilepton = vLepton[0]+vLepton[1];
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-56,2)+TMath::Power(fRecTPCsignal[1]-56,2));
+ if (fRecTPCsignalDist < 3.6*4.0) fChannel = -1;
+ else {
+ fRecTPCsignalDist = TMath::Sqrt(TMath::Power(fRecTPCsignal[0]-78,2)+TMath::Power(fRecTPCsignal[1]-78,2));
+ if (fRecTPCsignalDist < 4.1*4.0) fChannel = 1;
+ }
+ if(fChannel == -1) if(vDilepton.M() > 3.0 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.15) ((TH1D*)(fListPsi2sTight->At(i)))->Fill(vCandidate.M());
+ if(fChannel == 1) if(vDilepton.M() > 2.6 && vDilepton.M() < 3.2 && vCandidate.Pt()<0.3) ((TH1D*)(fListPsi2sTight->At(i)))->Fill(vCandidate.M());
+ }
+ }
+}//Tight cuts
+
}
//_____________________________________________________________________________
AliAODTrack* trk_clone=(AliAODTrack*)trk->Clone("trk_clone");
if(!trk_clone->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
delete trk_clone;
- if(!trk->PropagateToDCA(fAODVertex,aod->GetMagneticField(),300.,dca,cov)) continue;
if(TMath::Abs(dca[1]) > 2) continue;
Double_t cut_DCAxy = 4*(0.0182 + 0.0350/TMath::Power(trk->Pt(),1.01));
if(TMath::Abs(dca[0]) > cut_DCAxy) continue;
if(!trk->RelateToVertex(fESDVertex, esd->GetMagneticField(),300.,&cParam)) continue;
trk->GetImpactParameters(dca[0],dca[1]);
if(TMath::Abs(dca[1]) > 2) continue;
- if(TMath::Abs(dca[1]) > 0.2) continue;
+ if(TMath::Abs(dca[0]) > 0.2) continue;
TrackIndex[nGoodTracks] = itr;
nGoodTracks++;
cout<<"Analysis complete."<<endl;
}//Terminate
+//_____________________________________________________________________________
+Double_t AliAnalysisTaskUpcPsi2s::GetMedian(Double_t *daArray) {
+ // Allocate an array of the same size and sort it.
+ Double_t dpSorted[4];
+ for (Int_t i = 0; i < 4; ++i) {
+ dpSorted[i] = daArray[i];
+ }
+ for (Int_t i = 3; i > 0; --i) {
+ for (Int_t j = 0; j < i; ++j) {
+ if (dpSorted[j] > dpSorted[j+1]) {
+ Double_t dTemp = dpSorted[j];
+ dpSorted[j] = dpSorted[j+1];
+ dpSorted[j+1] = dTemp;
+ }
+ }
+ }
+
+ // Middle or average of middle values in the sorted array.
+ Double_t dMedian = 0.0;
+ dMedian = (dpSorted[2] + dpSorted[1])/2.0;
+
+ return dMedian;
+}
void SetRunSyst(Bool_t runSyst){fRunSystematics = runSyst;}
void SetIsMC(Bool_t MC){isMC = MC;}
void InitSystematics();
+ Double_t GetMedian(Double_t *daArray);
private:
Int_t fType; // 0 - ESD, 1 - AOD
TList *fListSystematics;
TList *fListJPsiLoose;
TList *fListJPsiTight;
+ TList *fListPsi2sLoose;
+ TList *fListPsi2sTight;
AliAnalysisTaskUpcPsi2s(const AliAnalysisTaskUpcPsi2s&); //not implemented
AliAnalysisTaskUpcPsi2s& operator =(const AliAnalysisTaskUpcPsi2s&); //not implemented
return kTRUE;
}
+//______________________________________________________
+Bool_t AliExternalTrackParam::RotateParamOnly(Double_t alpha)
+{
+ // rotate to new frame, ignore covariance
+ if (TMath::Abs(fP[2]) >= kAlmost1) {
+ AliError(Form("Precondition is not satisfied: |sin(phi)|>1 ! %f",fP[2]));
+ return kFALSE;
+ }
+ //
+ if (alpha < -TMath::Pi()) alpha += 2*TMath::Pi();
+ else if (alpha >= TMath::Pi()) alpha -= 2*TMath::Pi();
+ //
+ Double_t &fP0=fP[0];
+ Double_t &fP2=fP[2];
+ //
+ Double_t x=fX;
+ Double_t ca=TMath::Cos(alpha-fAlpha), sa=TMath::Sin(alpha-fAlpha);
+ Double_t sf=fP2, cf=TMath::Sqrt((1.- fP2)*(1.+fP2)); // Improve precision
+ // RS: check if rotation does no invalidate track model (cos(local_phi)>=0, i.e. particle
+ // direction in local frame is along the X axis
+ if ((cf*ca+sf*sa)<0) {
+ AliDebug(1,Form("Rotation failed: local cos(phi) would become %.2f",cf*ca+sf*sa));
+ return kFALSE;
+ }
+ //
+ Double_t tmp=sf*ca - cf*sa;
+
+ if (TMath::Abs(tmp) >= kAlmost1) {
+ if (TMath::Abs(tmp) > 1.+ Double_t(FLT_EPSILON))
+ AliWarning(Form("Rotation failed ! %.10e",tmp));
+ return kFALSE;
+ }
+ fAlpha = alpha;
+ fX = x*ca + fP0*sa;
+ fP0= -x*sa + fP0*ca;
+ fP2= tmp;
+ return kTRUE;
+}
+
Bool_t AliExternalTrackParam::Invert() {
//------------------------------------------------------------------
// Transform this track to the local coord. system rotated by 180 deg.
}
+ void SetParamOnly(double x, double alpha, const double param[5]) {
+ // Sets the parameters, neglect cov matrix
+ if (alpha < -TMath::Pi()) alpha += 2*TMath::Pi();
+ else if (alpha >= TMath::Pi()) alpha -= 2*TMath::Pi();
+ fX=x; fAlpha=alpha;
+ for (Int_t i = 0; i < 5; i++) fP[i] = param[i];
+ }
+
void Set(Double_t xyz[3],Double_t pxpypz[3],Double_t cv[21],Short_t sign);
static void SetMostProbablePt(Double_t pt) { fgMostProbablePt=pt; }
Double_t *GetResiduals(Double_t *p,Double_t *cov,Bool_t updated=kTRUE) const;
Bool_t Update(Double_t p[2],Double_t cov[3]);
Bool_t Rotate(Double_t alpha);
+ Bool_t RotateParamOnly(Double_t alpha);
Bool_t Invert();
Bool_t PropagateTo(Double_t x, Double_t b);
Bool_t PropagateParamOnlyTo(Double_t xk, Double_t b);
Bool_t minSuccess = kFALSE;
if (minim) {
+ minSuccess = kTRUE;
+
TIter param(&fTrackParametrizations);
while (AliTRDtrackParametrization *par = (AliTRDtrackParametrization*) param()) {
minim->Clear();
minim->SetFunction(res);
par->SetParams(minim);
- minSuccess = minim->Minimize();
+ minSuccess &= minim->Minimize();
par->GetParams(minim);
}
}
AliTRDpadPlane *pp = fgGeometry->GetPadPlane(trkl->GetDetector());
Float_t zlen = 0.5 * pp->GetRowSize(trkl->GetBinZ());
- Float_t zpad = pp->GetRowPos(trkl->GetBinZ()) - zlen;
- zpad = AliTRDtrackOnline::GetZ(trkl);
+ Float_t zpad = AliTRDtrackOnline::GetZ(trkl);
Float_t zrel = zext - zpad;
if (zrel > zlen)
zrel = zlen;
Float_t ycorr = trkl->GetLocalY() + TMath::Tan(TMath::Pi()/180.*pp->GetTiltingAngle()) * zrel;
- deltaY = ycorr - yext;
- deltaZ = AliTRDtrackOnline::GetZ(trkl) - zext;
- deltaY /= 0.3;
- deltaZ /= 3.;
-// printf("in layer %i: deltaY = %f, deltaZ = %f\n", layer, deltaY, deltaZ);
+ deltaY = ycorr - yext;
+ deltaZ = zpad - zext;
+ deltaY /= 0.05;
+ deltaZ /= pp->GetRowSize(trkl->GetBinZ()) / TMath::Sqrt(12.);
+ // printf("for tracklet %i: deltaY = %f, deltaZ = %f\n", iTracklet, deltaY, deltaZ);
chi2 += deltaY*deltaY + deltaZ*deltaZ;
}
void Print(Option_t *option = "") const;
static Float_t GetX(AliVTrdTracklet *trkl) { return fgGeometry->GetTime0(trkl->GetDetector() % 6); }
- static Float_t GetZ(AliVTrdTracklet *trkl) { return fgGeometry->GetPadPlane((trkl->GetDetector() % 6), (trkl->GetDetector()/6) % 5)->GetRowPos(trkl->GetBinZ()) -
- fgGeometry->GetPadPlane((trkl->GetDetector() % 6), (trkl->GetDetector()/6) % 5)->GetRowSize(trkl->GetBinZ()); }
+ static Float_t GetZ(AliVTrdTracklet *trkl) { return
+ fgGeometry->GetPadPlane(trkl->GetDetector())->GetRowPos(trkl->GetBinZ()) -
+ .5 * fgGeometry->GetPadPlane(trkl->GetDetector())->GetRowSize(trkl->GetBinZ()); }
static AliTRDgeometry *fgGeometry;
protected:
AliVZEROCalibData *calData = (AliVZEROCalibData*)ent->GetObject();
for(Int_t pmNumber = 0; pmNumber < 64; ++pmNumber) {
- printf("Ch=%d HV=%.1f MIP=%.3f Ped0=%.1f Ped1=%.1f Thr=%1.f\n",
+ printf("Ch=%d HV=%.1f MIP=%.3f Ped0=%.1f Ped1=%.1f Thr=%1.f Dead=%s\n",
pmNumber,
calData->GetMeanHV(pmNumber),
1./calData->GetMIPperADC(pmNumber),
calData->GetPedestal(pmNumber),calData->GetPedestal(pmNumber+64),
- calData->GetDiscriThr(pmNumber));
+ calData->GetDiscriThr(pmNumber),
+ calData->IsChannelDead(pmNumber)?"yes":"no");
}
}