fLeadingChargedIndex(-1),
fLowPtMapping(1.),
fHighPtMapping(3.),
+ fDoCF(kFALSE),
fAODBranch(NULL),
fAODBranchName("GammaConv")//,
// fAODObjects(NULL)
fLeadingChargedIndex(-1),
fLowPtMapping(1.),
fHighPtMapping(3.),
+ fDoCF(kFALSE),
fAODBranch(NULL),
fAODBranchName("GammaConv")//,
// fAODObjects(NULL)
ConnectInputData("");
//Each event needs an empty branch
- fAODBranch->Clear();
+ // fAODBranch->Clear();
+ fAODBranch->Delete();
if(fKFReconstructedGammasTClone == NULL){
fKFReconstructedGammasTClone = new TClonesArray("AliKFParticle",0);
}
//clear TClones
- fKFReconstructedGammasTClone->Clear();
- fCurrentEventPosElectronTClone->Clear();
- fCurrentEventNegElectronTClone->Clear();
- fKFReconstructedGammasCutTClone->Clear();
- fPreviousEventTLVNegElectronTClone->Clear();
- fPreviousEventTLVPosElectronTClone->Clear();
+ fKFReconstructedGammasTClone->Delete();
+ fCurrentEventPosElectronTClone->Delete();
+ fCurrentEventNegElectronTClone->Delete();
+ fKFReconstructedGammasCutTClone->Delete();
+ fPreviousEventTLVNegElectronTClone->Delete();
+ fPreviousEventTLVPosElectronTClone->Delete();
+ //fKFReconstructedGammasTClone->Clear();
+ //fCurrentEventPosElectronTClone->Clear();
+ //fCurrentEventNegElectronTClone->Clear();
+ //fKFReconstructedGammasCutTClone->Clear();
+ //fPreviousEventTLVNegElectronTClone->Clear();
+ //fPreviousEventTLVPosElectronTClone->Clear();
//clear vectors
// fKFReconstructedGammas.clear();
// fCurrentEventNegElectron.clear();
// fKFReconstructedGammasCut.clear();
- fChargedParticles->Clear();
+ fChargedParticles->Delete();
+ //fChargedParticles->Clear();
fChargedParticlesId.clear();
//Clear the data in the v0Reader
// for CF
- if(!fGCMCEvent) cout << "NO MC INFO FOUND" << endl;
- fCFManager->SetEventInfo(fGCMCEvent);
- Double_t containerInput[3];
+ Double_t containerInput[3];
+ if(fDoCF){
+ if(!fGCMCEvent) cout << "NO MC INFO FOUND" << endl;
+ fCFManager->SetEventInfo(fGCMCEvent);
+ }
// end for CF
fHistograms->FillHistogram("MC_allGamma_Rapid", rapidity);
// for CF
- containerInput[0] = particle->Pt();
- containerInput[1] = particle->Eta();
- if(particle->GetMother(0) >=0){
- containerInput[2] = fStack->Particle(particle->GetMother(0))->GetMass();
- }
- else{
- containerInput[2]=-1;
- }
+ if(fDoCF){
+ containerInput[0] = particle->Pt();
+ containerInput[1] = particle->Eta();
+ if(particle->GetMother(0) >=0){
+ containerInput[2] = fStack->Particle(particle->GetMother(0))->GetMass();
+ }
+ else{
+ containerInput[2]=-1;
+ }
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepGenerated); // generated gamma
-
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepGenerated); // generated gamma
+ }
if(particle->GetMother(0) < 0){ // direct gamma
fHistograms->FillHistogram("MC_allDirectGamma_Energy",particle->Energy());
fHistograms->FillHistogram("MC_allDirectGamma_Pt", particle->Pt());
// for CF
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepReconstructable); // reconstructable gamma
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepReconstructable); // reconstructable gamma
+ }
fHistograms->FillHistogram("MC_ConvGamma_Energy", particle->Energy());
fHistograms->FillHistogram("MC_ConvGamma_Pt", particle->Pt());
fHistograms->FillHistogram("MC_ConvGamma_Eta", particle->Eta());
rapidity = 0.5*(TMath::Log((twoGammaCandidate->GetE() +twoGammaCandidate->GetPz()) / (twoGammaCandidate->GetE()-twoGammaCandidate->GetPz())));
}
- if(openingAngleTwoGammaCandidate < fMinOpeningAngleGhostCut) continue; // minimum opening angle to avoid using ghosttracks
-
+ if(openingAngleTwoGammaCandidate < fMinOpeningAngleGhostCut){
+ delete twoGammaCandidate;
+ continue; // minimum opening angle to avoid using ghosttracks
+ }
+
fHistograms->FillHistogram("ESD_Mother_GammaDaughter_OpeningAngle", openingAngleTwoGammaCandidate);
fHistograms->FillHistogram("ESD_Mother_Energy", twoGammaCandidate->GetE());
fHistograms->FillHistogram("ESD_Mother_Pt", momentumVectorTwoGammaCandidate.Pt());
- if(openingAngleBG < fMinOpeningAngleGhostCut ) continue; // minimum opening angle to avoid using ghosttracks
-
+ if(openingAngleBG < fMinOpeningAngleGhostCut ){
+ delete backgroundCandidate;
+ continue; // minimum opening angle to avoid using ghosttracks
+ }
fHistograms->FillHistogram("ESD_Background_GammaDaughter_OpeningAngle", openingAngleBG);
fHistograms->FillHistogram("ESD_Background_Energy", backgroundCandidate->GetE());
void AliAnalysisTaskGammaConversion::UserCreateOutputObjects()
{
//AOD
- fAODBranch = new TClonesArray("AliGammaConversionAODObject", 0);
+ if(fAODBranch==NULL){
+ fAODBranch = new TClonesArray("AliGammaConversionAODObject", 0);
+ }
+ fAODBranch->Delete();
fAODBranch->SetName(fAODBranchName);
AddAODBranch("TClonesArray", &fAODBranch);
*/
-
-
+
+
+ vESDeNegTemp->Delete();
+ vESDePosTemp->Delete();
+ vESDxNegTemp->Delete();
+ vESDxPosTemp->Delete();
+ vESDeNegNoJPsi->Delete();
+ vESDePosNoJPsi->Delete();
+
+ delete vESDeNegTemp;
+ delete vESDePosTemp;
+ delete vESDxNegTemp;
+ delete vESDxPosTemp;
+ delete vESDeNegNoJPsi;
+ delete vESDePosNoJPsi;
}
/*
TClonesArray GetTLorentzVector(TClonesArray* esdTrack);
void ProcessGammaElectronsForChicAnalysis();
///////////////////////////////////////////////////////////////
-
+
+ void SetDoCF(Bool_t flag){fDoCF = flag;}
private:
AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented
Double_t fMinPtGamChargedCorr; //! transient
Double_t fMinPtJetCone; //! transient
Int_t fLeadingChargedIndex; //! transient
- Double_t fLowPtMapping;
- Double_t fHighPtMapping;
-
+ Double_t fLowPtMapping; //! transient
+ Double_t fHighPtMapping; //! transient
+ Bool_t fDoCF; //! transient
TClonesArray* fAODBranch ; //! selected particles branch
TString fAODBranchName; // New AOD branch name
// TClonesArray *fAODObjects;
- ClassDef(AliAnalysisTaskGammaConversion, 4); // Analysis task for gamma conversions
+ ClassDef(AliAnalysisTaskGammaConversion, 5); // Analysis task for gamma conversions
};
#endif //ALIANALYSISTASKGAMMA_H
fNSigmaMass(0.),
fUseImprovedVertex(kFALSE),
fUseOwnXYZCalculation(kFALSE),
+ fDoCF(kFALSE),
fCurrentEventGoodV0s(),
fPreviousEventGoodV0s()
{
fNSigmaMass(original.fNSigmaMass),
fUseImprovedVertex(original.fUseImprovedVertex),
fUseOwnXYZCalculation(original.fUseOwnXYZCalculation),
+ fDoCF(original.fDoCF),
fCurrentEventGoodV0s(original.fCurrentEventGoodV0s),
fPreviousEventGoodV0s(original.fPreviousEventGoodV0s)
{
// for CF
//Get pointer to the mc event
- fMCEvent = fMCTruth->MCEvent();
- if(fMCEvent == NULL){
- //print warning here
- }
-
+ if(fDoCF){
+ fMCEvent = fMCTruth->MCEvent();
+ if(fMCEvent == NULL){
+ //print warning here
+ fDoCF = kFALSE;
+ }
+ }
AliKFParticle::SetField(fESDEvent->GetMagneticField());
}
Double_t containerInput[3];
- containerInput[0] = GetMotherCandidatePt();
- containerInput[1] = GetMotherCandidateEta();
- containerInput[2] = GetMotherCandidateMass();
-
+ if(fDoCF){
+ containerInput[0] = GetMotherCandidatePt();
+ containerInput[1] = GetMotherCandidateEta();
+ containerInput[2] = GetMotherCandidateMass();
+ }
//checks if on the fly mode is set
if ( !fCurrentV0->GetOnFlyStatus() ){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepGetOnFly); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepGetOnFly); // for CF
+ }
+
//checks if we have a prim vertex
if(fESDEvent->GetPrimaryVertex()->GetNContributors()<=0) {
if(fHistograms != NULL){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepNContributors); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepNContributors); // for CF
+ }
//Check the pid probability
if(CheckPIDProbability(fPIDProbabilityCutNegativeParticle,fPIDProbabilityCutPositiveParticle)==kFALSE){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepTPCPID); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepTPCPID); // for CF
+ }
if(fUseOwnXYZCalculation == kFALSE){
}
fCurrentV0IndexNumber++;
continue;
- }
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepR); // for CF
-
+ }
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepR); // for CF
+ }
if((TMath::Abs(fCurrentZValue)*fLineCutZRSlope)-fLineCutZValue > GetXYRadius() ){ // cuts out regions where we do not reconstruct
}
fCurrentV0IndexNumber++;
continue;
- }
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepLine); // for CF
-
+ }
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepLine); // for CF
+ }
if(TMath::Abs(fCurrentZValue) > fMaxZ ){ // cuts out regions where we do not reconstruct
if(fHistograms != NULL){
}
fCurrentV0IndexNumber++;
continue;
- }
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepZ); // for CF
-
+ }
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepZ); // for CF
+ }
/* Moved further up so corr framework can work
if(UpdateV0Information() == kFALSE){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepNDF); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepNDF); // for CF
+ }
Double_t chi2V0 = fCurrentMotherKFCandidate->GetChi2()/fCurrentMotherKFCandidate->GetNDF();
if(chi2V0 > fChi2CutConversion || chi2V0 <=0){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepChi2); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepChi2); // for CF
+ }
if(TMath::Abs(fMotherCandidateLorentzVector->Eta())> fEtaCut){
if(fHistograms != NULL){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepEta); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepEta); // for CF
+ }
if(fMotherCandidateLorentzVector->Pt()<fPtCut){
if(fHistograms != NULL){
fCurrentV0IndexNumber++;
continue;
}
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepPt); // for CF
-
+ if(fDoCF){
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepPt); // for CF
+ }
}
else if(fUseESDTrack){
// for CF
Double_t containerInput[3];
- containerInput[0] = GetMotherCandidatePt();
- containerInput[1] = GetMotherCandidateEta();
- containerInput[2] = GetMotherCandidateMass();
-
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepLikeSign); // for CF
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepTPCRefit); // for CF
- fCFManager->GetParticleContainer()->Fill(containerInput,kStepKinks); // for CF
-
+ if(fDoCF){
+ containerInput[0] = GetMotherCandidatePt();
+ containerInput[1] = GetMotherCandidateEta();
+ containerInput[2] = GetMotherCandidateMass();
+
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepLikeSign); // for CF
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepTPCRefit); // for CF
+ fCFManager->GetParticleContainer()->Fill(containerInput,kStepKinks); // for CF
+ }
return iResult;
}
Bool_t GetConvPosXY(AliESDtrack* ptrack,AliESDtrack* ntrack, Double_t b, Double_t convpos[2]);
Double_t GetConvPosZ(AliESDtrack* ptrack,AliESDtrack* ntrack, Double_t b);
+
+ void SetDoCF(Bool_t flag){fDoCF = flag;}
+
private:
AliStack * fMCStack; // pointer to MonteCarlo particle stack
Bool_t fUseImprovedVertex; //flag
Bool_t fUseOwnXYZCalculation; //flag that determines if we use our own calculation of xyz (markus)
+
+ Bool_t fDoCF;
vector<AliKFParticle> fCurrentEventGoodV0s; //vector of good v0s
vector<AliKFParticle> fPreviousEventGoodV0s; // vector of good v0s from prevous events
- ClassDef(AliV0Reader,4)
+ ClassDef(AliV0Reader,5)
};
#endif
Bool_t kGCrunNeutralMeson = kTRUE;
Bool_t kGCrunJet = kFALSE;
Bool_t kGCrunChic = kFALSE;
+Bool_t kGCrunCF = kFALSE;
/** ---------------------------------- define cuts here ------------------------------------*/
cout<<"Running Chi_c analysis"<<endl;
kGCrunChic = kTRUE;
}
+ else if (argument.CompareTo("-run-cf") == 0){
+ cout<<"Running CF"<<endl;
+ kGCrunCF = kTRUE;
+ }
+
else if (argument.CompareTo("-jet-off") == 0){
cout<<"Skipping jet analysis"<<endl;
kGCrunJet = kFALSE;
gammaconversion->SetDoNeutralMeson(kGCrunNeutralMeson);
gammaconversion->SetDoJet(kGCrunJet);
gammaconversion->SetDoChic(kGCrunChic);
+
// for CF
gammaconversion->SetCFManager(man);
-
+ gammaconversion->SetDoCF(kGCrunCF);
+ v0Reader->SetDoCF(kGCrunCF);
// Add task to the manager
mgr->AddTask(gammaconversion);