#include <TParticle.h>\r
#include <TNtuple.h>\r
#include <TClonesArray.h>\r
-#include <TObjString.h>\r
+//#include <TObjString.h>\r
//#include <Riostream.h>\r
\r
// --- Analysis system --- \r
#include "AliCaloTrackReader.h"\r
#include "AliMCAnalysisUtils.h"\r
#include "AliAODCaloCluster.h"\r
-#include "AliFidutialCut.h"\r
+#include "AliFiducialCut.h"\r
#include "AliAODTrack.h"\r
#include "AliAODPid.h"\r
#include "AliCaloPID.h"\r
fhPtElectron(0),fhPhiElectron(0),fhEtaElectron(0),\r
fhPtNPE(0),fhPhiNPE(0),fhEtaNPE(0),\r
fhPtPE(0),fhPhiPE(0),fhEtaPE(0),\r
+ //for comparisons with tracking detectors\r
+ fhPtHadron(0),fhPtNPEleTPC(0),fhPtNPEleTPCTRD(0),fhPtNPEleTTE(0),\r
+ fhPtNPEleEMCAL(0),\r
//DVM B-tagging\r
fhDVMBtagCut1(0),fhDVMBtagCut2(0),fhDVMBtagCut3(0),fhDVMBtagQA1(0),fhDVMBtagQA2(0),\r
fhDVMBtagQA3(0),fhDVMBtagQA4(0),fhDVMBtagQA5(0),\r
//reco electrons from various sources\r
fhPhiConversion(0),fhEtaConversion(0),\r
//for comparisons with tracking detectors\r
- fhPtTrack(0),fhPtHadron(0),fhPtNPEleTPC(0),fhPtNPEleTPCTRD(0),fhPtNPEleTTE(0),\r
- fhPtNPEleEMCAL(0),fhPtNPEBHadron(0),\r
+ fhPtTrack(0),\r
+ fhPtNPEBHadron(0),\r
//for computing efficiency of B-jet tags\r
fhBJetPt1x4(0),fhBJetPt2x3(0),fhBJetPt3x2(0),\r
fhFakeJetPt1x4(0),fhFakeJetPt2x3(0),fhFakeJetPt3x2(0),fhDVMJet(0),\r
fhPtElectron(g.fhPtElectron),fhPhiElectron(g.fhPhiElectron),fhEtaElectron(g.fhEtaElectron),\r
fhPtNPE(g.fhPtNPE),fhPhiNPE(g.fhPhiNPE),fhEtaNPE(g.fhEtaNPE),\r
fhPtPE(g.fhPtPE),fhPhiPE(g.fhPhiPE),fhEtaPE(g.fhEtaPE),\r
+ //for comparisons with tracking detectors\r
+ fhPtHadron(g.fhPtHadron),fhPtNPEleTPC(g.fhPtNPEleTPC),\r
+ fhPtNPEleTPCTRD(g.fhPtNPEleTPCTRD),fhPtNPEleTTE(g.fhPtNPEleTTE),\r
+ fhPtNPEleEMCAL(g.fhPtNPEleEMCAL),\r
//DVM B-tagging\r
fhDVMBtagCut1(g.fhDVMBtagCut1),fhDVMBtagCut2(g.fhDVMBtagCut2),fhDVMBtagCut3(g.fhDVMBtagCut3),\r
fhDVMBtagQA1(g.fhDVMBtagQA1),fhDVMBtagQA2(g.fhDVMBtagQA2),\r
//reco electrons from various sources\r
fhPhiConversion(g.fhPhiConversion),fhEtaConversion(g.fhEtaConversion),\r
//for comparisons with tracking detectors\r
- fhPtTrack(g.fhPtTrack),fhPtHadron(g.fhPtHadron),fhPtNPEleTPC(g.fhPtNPEleTPC),\r
- fhPtNPEleTPCTRD(g.fhPtNPEleTPCTRD),fhPtNPEleTTE(g.fhPtNPEleTTE),\r
- fhPtNPEleEMCAL(g.fhPtNPEleEMCAL),fhPtNPEBHadron(g.fhPtNPEBHadron),\r
+ fhPtTrack(g.fhPtTrack),\r
+ fhPtNPEBHadron(g.fhPtNPEBHadron),\r
//for computing efficiency of B-jet tags\r
fhBJetPt1x4(g.fhBJetPt1x4),fhBJetPt2x3(g.fhBJetPt2x3),\r
fhBJetPt3x2(g.fhBJetPt3x2),\r
fhPtPE = g.fhPtPE;\r
fhPhiPE = g.fhPhiPE;\r
fhEtaPE = g.fhEtaPE; \r
+ //for comparisons with tracking detectors\r
+ fhPtHadron = g.fhPtHadron; fhPtNPEleTPC = g.fhPtNPEleTPC; \r
+ fhPtNPEleTPCTRD = g.fhPtNPEleTPCTRD; fhPtNPEleTTE = g.fhPtNPEleTTE; \r
+ fhPtNPEleEMCAL = g.fhPtNPEleEMCAL; \r
//DVM B-tagging\r
fhDVMBtagCut1 = g.fhDVMBtagCut1;\r
fhDVMBtagCut2 = g.fhDVMBtagCut2; \r
fhEtaConversion = g.fhEtaConversion;\r
//for comparisons with tracking detectors\r
fhPtTrack = g.fhPtTrack;\r
- fhPtHadron = g.fhPtHadron; fhPtNPEleTPC = g.fhPtNPEleTPC; \r
- fhPtNPEleTPCTRD = g.fhPtNPEleTPCTRD; fhPtNPEleTTE = g.fhPtNPEleTTE; \r
- fhPtNPEleEMCAL = g.fhPtNPEleEMCAL; fhPtNPEBHadron = g.fhPtNPEBHadron;\r
+ fhPtNPEBHadron = g.fhPtNPEBHadron;\r
//for computing efficiency of B-jet tags\r
fhBJetPt1x4 = g.fhBJetPt1x4; fhBJetPt2x3 = g.fhBJetPt2x3; \r
fhBJetPt3x2 = g.fhBJetPt3x2;\r
TList * outputContainer = new TList() ; \r
outputContainer->SetName("ElectronHistos") ; \r
\r
- Int_t nptbins = GetHistoNPtBins();\r
- Int_t nphibins = GetHistoNPhiBins();\r
- Int_t netabins = GetHistoNEtaBins();\r
+ Int_t nptbins = GetHistoPtBins();\r
+ Int_t nphibins = GetHistoPhiBins();\r
+ Int_t netabins = GetHistoEtaBins();\r
Float_t ptmax = GetHistoPtMax();\r
Float_t phimax = GetHistoPhiMax();\r
Float_t etamax = GetHistoEtaMax();\r
outputContainer->Add(fhPhiPE) ; \r
outputContainer->Add(fhEtaPE) ;\r
\r
+ //These histograms are mixed REAL/MC:\r
+ //Bins along y-axis are: \r
+ //0 - unfiltered (filled for both real and MC data) \r
+ //1 - bottom, 2 - charm, 3 - charm from bottom (MC only)\r
+ //4 - conversion, 5 - Dalitz, 6 - W and Z, 7 - junk/unknown (MC only)\r
+ //8 - misidentified (MC only)\r
+\r
+ //histograms for comparison to tracking detectors\r
+ fhPtHadron = new TH2F("hPtHadron","Charged hadrons w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+ fhPtNPEleTPC = new TH2F("hPtNPEleTPC","Non-phot. Electrons identified by TPC w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+ fhPtNPEleTPCTRD = new TH2F("hPtNPEleTPCTRD","Non-phot. Electrons identified by TPC+TRD w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+ fhPtNPEleTTE = new TH2F("hPtNPEleTTE","Non-phot. Electrons identified by TPC+TRD+EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10); \r
+ fhPtNPEleEMCAL = new TH2F("hPtNPEleEMCAL","Non-phot. Electrons identified by EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+ \r
+ outputContainer->Add(fhPtHadron);\r
+ outputContainer->Add(fhPtNPEleTPC);\r
+ outputContainer->Add(fhPtNPEleTPCTRD);\r
+ outputContainer->Add(fhPtNPEleTTE);\r
+ outputContainer->Add(fhPtNPEleEMCAL);\r
+\r
//B-tagging\r
fhDVMBtagCut1 = new TH2F("hdvmbtag_cut1","DVM B-tag result cut1", 10,0,10 ,nptbins,ptmin,ptmax);\r
fhDVMBtagCut2 = new TH2F("hdvmbtag_cut2","DVM B-tag result cut2", 10,0,10 ,nptbins,ptmin,ptmax);\r
\r
//histograms for comparison to tracking detectors\r
fhPtTrack = new TH2F("hPtTrack","Track w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
- fhPtHadron = new TH2F("hPtHadron","Charged hadrons w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
- fhPtNPEleTPC = new TH2F("hPtNPEleTPC","Non-phot. Electrons identified by TPC w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
- fhPtNPEleTPCTRD = new TH2F("hPtNPEleTPCTRD","Non-phot. Electrons identified by TPC+TRD w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
- fhPtNPEleTTE = new TH2F("hPtNPEleTTE","Non-phot. Electrons identified by TPC+TRD+EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10); \r
- fhPtNPEleEMCAL = new TH2F("hPtNPEleEMCAL","Non-phot. Electrons identified by EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
fhPtNPEBHadron = new TH2F("hPtNPEBHadron","Non-phot. b-electrons (TPC+TRD+EMCAL) vs B-hadron pt w/in EMCAL acceptance",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);\r
\r
outputContainer->Add(fhPtTrack);\r
- outputContainer->Add(fhPtHadron);\r
- outputContainer->Add(fhPtNPEleTPC);\r
- outputContainer->Add(fhPtNPEleTPCTRD);\r
- outputContainer->Add(fhPtNPEleTTE);\r
- outputContainer->Add(fhPtNPEleEMCAL);\r
outputContainer->Add(fhPtNPEBHadron);\r
\r
//for computing efficiency of IPSig tag\r
}//Histos with MC\r
\r
//Save parameters used for analysis\r
- TString parList ; //this will be list of parameters used for this analysis.\r
- char onePar[500] ;\r
- \r
- sprintf(onePar,"--- AliAnaElectron ---\n") ;\r
- parList+=onePar ; \r
- sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ;\r
- parList+=onePar ; \r
- sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ;\r
- parList+=onePar ; \r
- sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ;\r
- parList+=onePar ; \r
- sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ;\r
- parList+=onePar ; \r
- sprintf(onePar,"fMinClusEne: %f\n",fMinClusEne) ;\r
- parList+=onePar ;\r
- sprintf(onePar,"---DVM Btagging\n");\r
- parList+=onePar ;\r
- sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"min ITS-hits: %d\n",fITSCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"max dR (e,h): %f\n",fDrCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"max decaylength: %f\n",fDecayLenCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"---IPSig Btagging\n");\r
- parList+=onePar ;\r
- sprintf(onePar,"min tag track: %d\n",fNTagTrkCut);\r
- parList+=onePar ;\r
- sprintf(onePar,"min IP significance: %f\n",fIPSigCut);\r
- parList+=onePar ;\r
-\r
- //Get parameters set in base class.\r
- parList += GetBaseParametersList() ;\r
- \r
- //Get parameters set in FidutialCut class (not available yet)\r
- //parlist += GetFidCut()->GetFidCutParametersList() \r
- \r
- TObjString *oString= new TObjString(parList) ;\r
- outputContainer->Add(oString);\r
+// TString parList ; //this will be list of parameters used for this analysis.\r
+// char onePar[500] ;\r
+// \r
+// sprintf(onePar,"--- AliAnaElectron ---\n") ;\r
+// parList+=onePar ; \r
+// sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ;\r
+// parList+=onePar ; \r
+// sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ;\r
+// parList+=onePar ; \r
+// sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ;\r
+// parList+=onePar ; \r
+// sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ;\r
+// parList+=onePar ; \r
+// sprintf(onePar,"fMinClusEne: %f\n",fMinClusEne) ;\r
+// parList+=onePar ;\r
+// sprintf(onePar,"---DVM Btagging\n");\r
+// parList+=onePar ;\r
+// sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"min ITS-hits: %d\n",fITSCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"max dR (e,h): %f\n",fDrCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"max decaylength: %f\n",fDecayLenCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"---IPSig Btagging\n");\r
+// parList+=onePar ;\r
+// sprintf(onePar,"min tag track: %d\n",fNTagTrkCut);\r
+// parList+=onePar ;\r
+// sprintf(onePar,"min IP significance: %f\n",fIPSigCut);\r
+// parList+=onePar ;\r
+//\r
+// //Get parameters set in base class.\r
+// parList += GetBaseParametersList() ;\r
+// \r
+// //Get parameters set in FiducialCut class (not available yet)\r
+// //parlist += GetFidCut()->GetFidCutParametersList() \r
+// \r
+// TObjString *oString= new TObjString(parList) ;\r
+// outputContainer->Add(oString);\r
\r
return outputContainer ;\r
\r
// Also fill some QA histograms\r
//\r
\r
- TObjArray *cl = new TObjArray();\r
-\r
Double_t bfield = 0.;\r
if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
\r
printf("This class not yet implemented for PHOS\n");\r
abort();\r
}\r
- cl = GetAODEMCAL();\r
+ \r
+ TObjArray *cl = GetAODEMCAL();\r
\r
////////////////////////////////////////////////\r
//Start from tracks and get associated clusters \r
Double_t teta = pos.Eta();\r
Double_t tmom = mom.Mag();\r
\r
- TLorentzVector mom2(mom,0.);\r
- Bool_t in = GetFidutialCut()->IsInFidutialCut(mom2,fCalorimeter) ;\r
- if(GetDebug() > 1) printf("AliAnaElectron::MakeAnalysisFillAOD() - Track pt %2.2f, phi %2.2f, eta %2.2f in fidutial cut %d\n",track->Pt(), track->Phi(), track->Eta(), in);\r
+ //TLorentzVector mom2(mom,0.);\r
+ Bool_t in = kFALSE;\r
+ if(mom.Phi()*180./TMath::Pi() > 80. && mom.Phi()*180./TMath::Pi() < 190. &&\r
+ mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
+ //Also check the track\r
+ if(track->Phi()*180./TMath::Pi() > 80. && track->Phi()*180./TMath::Pi() < 190. &&\r
+ track->Eta() > -0.7 && track->Eta() < 0.7) in = kTRUE;\r
+ ////////////////////////////\r
+ //THIS HAS A MEM LEAK JLK 24-Oct-09\r
+ //Bool_t in = GetFiducialCut()->IsInFiducialCut(mom2,fCalorimeter) ;\r
+ ///////////////////////////\r
+ if(GetDebug() > 1) printf("AliAnaElectron::MakeAnalysisFillAOD() - Track(Extrap) pt %2.2f(%2.2f), phi %2.2f(%2.2f), eta %2.2f(%2.2f) in fiducial cut %d\n",track->Pt(), mom.Pt(), track->Phi(), mom.Phi(), track->Eta(),mom.Eta(), in);\r
+\r
if(mom.Pt() > GetMinPt() && in) {\r
\r
Double_t dEdx = pid->GetTPCsignal();\r
\r
TLorentzVector mom(px,py,pz,e);\r
TLorentzVector pos(vx,vy,vz,vt);\r
- Bool_t in = GetFidutialCut()->IsInFidutialCut(mom,fCalorimeter);\r
+ Bool_t in = kFALSE;\r
+ if(mom.Phi()*180./TMath::Pi() > 80. && mom.Phi()*180./TMath::Pi() < 190. &&\r
+ mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
+ /////////////////////////////////\r
+ //THIS HAS A MEM LEAK JLK 24-Oct-09\r
+ //Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,fCalorimeter);\r
+ ////////////////////////////////\r
if(mom.Pt() < GetMinPt()) continue;\r
if(!in) continue;\r
\r
Double_t massE = 0.000511;\r
Double_t massK = 0.493677;\r
\r
- Double_t bfield = 5.; //kG\r
- if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
-\r
Double_t vertex[3] = {-999.,-999.,-999}; //vertex\r
if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) {\r
GetReader()->GetVertex(vertex); //If only one file, get the vertex from there\r
AliExternalTrackParam *param1 = new AliExternalTrackParam(tr);\r
AliExternalTrackParam *param2 = new AliExternalTrackParam(tr2);\r
\r
+ Double_t bfield[3];\r
+ param1->GetBxByBz(bfield);\r
+ Double_t bz = param1->GetBz();\r
+\r
Double_t xplane1 = 0.; Double_t xplane2 = 0.;\r
- Double_t pairdca = param1->GetDCA(param2,bfield,xplane1,xplane2);\r
+ Double_t pairdca = param1->GetDCA(param2,bz,xplane1,xplane2);\r
\r
- param1->PropagateTo(xplane1,bfield);\r
- param2->PropagateTo(xplane2,bfield);\r
+ param1->PropagateToBxByBz(xplane1,bfield);\r
+ param2->PropagateToBxByBz(xplane2,bfield);\r
\r
Int_t id1 = 0, id2 = 0;\r
AliESDv0 bvertex(*param1,id1,*param2,id2);\r
decayvector = secvtxpt - primV; //decay vector from PrimVtx\r
Double_t decaylength = decayvector.Mag();\r
\r
+ printf("\t JLK pairDCA = %2.2f\n",pairdca);\r
+\r
if(GetDebug() > 0) {\r
printf(">>ComputeSdca:: mom1=%f, mom2=%f \n", emomAtB.Perp(), hmomAtB.Perp() );\r
printf(">>ComputeSdca:: pairDCA=%f, length=%f \n", pairdca,decaylength );\r
}\r
\r
Double_t significance=0;\r
- Double_t magField = 0;\r
Double_t maxD = 10000.;\r
Double_t impPar[] = {0,0};\r
Double_t ipCov[]={0,0,0};\r
AliVTrack* vTrack = (AliVTrack*)vEvent->GetTrack(trackIndex);\r
if(!vTrack) return -99;\r
AliESDtrack esdTrack(vTrack);\r
- if(!esdTrack.PropagateToDCA(vv, magField, maxD, impPar, ipCov)) return -100;\r
+ Double_t bfield[3];\r
+ esdTrack.GetBxByBz(bfield);\r
+ if(!esdTrack.PropagateToDCABxByBz(vv, bfield, maxD, impPar, ipCov)) return -100;\r
if(ipCov[0]<0) return -101;\r
\r
Double_t Pxy[] = {esdTrack.Px(), esdTrack.Py()};\r
Double_t cosTheta = TMath::Cos(jetPhi - phiIP);\r
Double_t sign = cosTheta/TMath::Abs(cosTheta);\r
significance = TMath::Abs(impPar[0])/TMath::Sqrt(ipCov[0])*sign;\r
+ printf("\t JLK significance = %2.2f\n",significance);\r
//ip = fabs(impPar[0]);\r
fhIPSigBtagQA2->Fill(significance);\r
return significance;\r
Double_t massOmega = 0.782;\r
Double_t massPhi = 1.020;\r
\r
- Double_t bfield = 5.; //kG\r
- if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
-\r
Int_t pdg1 = part->GetPdg();\r
Int_t trackId = part->GetTrackLabel(0);\r
AliAODTrack* track = (AliAODTrack*)GetAODCTS()->At(trackId);\r
//Once alice-off gets its act together and fixes the AOD, this\r
//should become obsolete.\r
\r
- Double_t bfield = 5.; //kG\r
Double_t maxD = 100000.; //max transverse IP\r
if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) {\r
- bfield = GetReader()->GetBField();\r
AliVEvent* ve = (AliVEvent*)GetReader()->GetInputEvent();\r
AliVVertex *vv = (AliVVertex*)ve->GetPrimaryVertex();\r
AliESDtrack esdTrack(track);\r
- Bool_t gotit = esdTrack.PropagateToDCA(vv,bfield,maxD,impPar,cov);\r
+ Double_t bfield[3];\r
+ esdTrack.GetBxByBz(bfield);\r
+ Bool_t gotit = esdTrack.PropagateToDCABxByBz(vv,bfield,maxD,impPar,cov);\r
+ printf("\t JLK impPar = %2.2f\n",impPar[0]);\r
return gotit;\r
}\r
\r
Int_t label = ele->GetTrackLabel(0);\r
if(label != trackId) continue; //skip to the next one if they don't match\r
\r
- if(type=="DVM") { \r
+ if(strcmp(type,"DVM")==0) { \r
if(ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag1) ||\r
ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag2))\r
pass = kTRUE;\r
\r
- } else if (type=="NPE") {\r
+ } else if (strcmp(type,"NPE")==0) {\r
\r
Bool_t photonic = kFALSE;\r
Bool_t photonic1 = kFALSE;\r
} \r
\r
//________________________________________________________________________\r
-void AliAnaElectron::ReadHistograms(TList* outputList)\r
+void AliAnaElectron::ReadHistograms(TList* /* outputList */)\r
{\r
// Needed when Terminate is executed in distributed environment \r
// Refill analysis histograms of this class with corresponding\r