fUseMultiplicity(0),
fUseMultiplicityBin(0),
fUseCentrality(0),
- fUseCentralityBin(0)
+ fUseCentralityBin(0),
+ fRandom(0)
{
// Default constructor
fUseMultiplicity(0),
fUseMultiplicityBin(0),
fUseCentrality(0),
- fUseCentralityBin(0)
+ fUseCentralityBin(0),
+ fRandom(0)
{
// Common I/O in slot 0, don't define when inheriting from AnalysisTaskSE
// DefineInput (0, TChain::Class());
}
if(fDoRotation == kTRUE){
- TRandom3 *random = new TRandom3(0);
for(Int_t iCurrent=0;iCurrent<currentEventV0s->GetEntriesFast();iCurrent++){
AliKFParticle currentEventGoodV0 = *(AliKFParticle *)(currentEventV0s->At(iCurrent));
AliKFParticle *backgroundCandidateProb = new AliKFParticle(currentEventGoodV0,currentEventGoodV02);
backgroundCandidateProb->GetMass(massBGprob,widthBGprob);
if(massBGprob>0.1 && massBGprob<0.14){
- if(random->Rndm()>bgHandler->GetBGProb(zbin,mbin)){
+ if(fRandom.Rndm()>bgHandler->GetBGProb(zbin,mbin)){
delete backgroundCandidateProb;
continue;
}
}
Double_t nRadiansPM = fNDegreesPMBackground*TMath::Pi()/180;
-
- Double_t rotationValue = random->Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM;
+
+ Double_t rotationValue = fRandom.Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM;
RotateKFParticle(¤tEventGoodV02,rotationValue);
}
}
}
- delete random;
}
else{ // means no rotation
AliGammaConversionBGHandler::GammaConversionVertex *bgEventVertex = NULL;
#include <vector>
#include "AliV0Reader.h"
#include "AliGammaConversionBGHandler.h"
-//#include "TRandom3.h"
+#include "TRandom3.h"
+#include "TF1.h"
//#include "AliCFManager.h" // for CF
//#include "AliCFContainer.h" // for CF
class AliCFManager; // for CF
class AliCFContainer; // for CF
class TRandom3;
+class TF1;
class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE
{
Int_t fUseMultiplicityBin;
Int_t fUseCentrality;
Int_t fUseCentralityBin;
- ClassDef(AliAnalysisTaskGammaConversion, 17); // Analysis task for gamma conversions
+ TRandom3 fRandom;
+ ClassDef(AliAnalysisTaskGammaConversion, 18); // Analysis task for gamma conversions
};
#endif //ALIANALYSISTASKGAMMA_H
#include "AliESDpid.h"
#include "AliGammaConversionBGHandler.h"
#include "AliESDtrackCuts.h"
-
+#include "TRandom3.h"
class iostream;
class AliESDv0;
class TFormula;
+class TRandom3;
using namespace std;
fPIDnSigmaBelowElectronLine(-100),
fTofPIDnSigmaAboveElectronLine(100), // RRnewTOF
fTofPIDnSigmaBelowElectronLine(-100), // RRnewTOF
- fPIDnSigmaAbovePionLine(-100),
+ fPIDnSigmaAbovePionLine(-100),
+ fPIDnSigmaAbovePionLineHighPt(-100),
fPIDMinPnSigmaAbovePionLine(100),
fPIDMaxPnSigmaAbovePionLine(100),
fDoKaonRejectionLowP(kFALSE),
fUseChargedTrackMultiplicityForBG(kTRUE),
fNumberOfGoodV0s(0),
fIsHeavyIon(0),
- fUseCorrectedTPCClsInfo(kFALSE)
+ fUseCorrectedTPCClsInfo(kFALSE),
+ fPBremSmearing(1.),
+ fPSigSmearing(0.),
+ fPSigSmearingCte(0.),
+ fRandom(0),
+ fBrem(NULL),
+ fDoPhotonAsymmetryCut(0),
+ fMinPPhotonAsymmetryCut(100.),
+ fMinPhotonAsymmetry(0.)
{
//fESDpid = new AliESDpid;
}
fTofPIDnSigmaAboveElectronLine(original.fTofPIDnSigmaAboveElectronLine), // RRnewTOF
fTofPIDnSigmaBelowElectronLine(original.fTofPIDnSigmaBelowElectronLine), // RRnewTOF
fPIDnSigmaAbovePionLine(original.fPIDnSigmaAbovePionLine),
+ fPIDnSigmaAbovePionLineHighPt(original.fPIDnSigmaAbovePionLineHighPt),
fPIDMinPnSigmaAbovePionLine(original.fPIDMinPnSigmaAbovePionLine),
fPIDMaxPnSigmaAbovePionLine(original.fPIDMaxPnSigmaAbovePionLine),
fDoKaonRejectionLowP(original.fDoKaonRejectionLowP),
fUseChargedTrackMultiplicityForBG(original.fUseChargedTrackMultiplicityForBG),
fNumberOfGoodV0s(original.fNumberOfGoodV0s),
fIsHeavyIon(original.fIsHeavyIon),
- fUseCorrectedTPCClsInfo(original.fUseCorrectedTPCClsInfo)
+ fUseCorrectedTPCClsInfo(original.fUseCorrectedTPCClsInfo),
+ fPBremSmearing(original.fPBremSmearing),
+ fPSigSmearing(original.fPSigSmearing),
+ fPSigSmearingCte(original.fPSigSmearingCte),
+ fRandom(original.fRandom),
+ fBrem(original.fBrem),
+ fDoPhotonAsymmetryCut(original.fDoPhotonAsymmetryCut),
+ fMinPPhotonAsymmetryCut(original.fMinPPhotonAsymmetryCut),
+ fMinPhotonAsymmetry(original.fMinPhotonAsymmetry)
{
}
fV0Pindex.clear();
fV0Nindex.clear();
+ if(gRandom != NULL){
+ delete gRandom;
+ gRandom= new TRandom3(0);
+ }
+
+
+ if (fBrem == NULL){
+ fBrem = new TF1("fBrem","pow(-log(x),[0]/log(2.0)-1.0)/TMath::Gamma([0]/log(2.0))",0.00001,0.999999999);
+ // tests done with 1.0e-14
+ fBrem->SetParameter(0,fPBremSmearing);
+ fBrem->SetNpx(100000);
+ }
+
if(fCalculateBackground == kTRUE){
if(fBGEventInitialized == kFALSE){
continue;
}
}
+
+ // High Pt
+ if( fCurrentPositiveESDTrack->P()>fPIDMaxPnSigmaAbovePionLine ){
+ if(fgESDpid->NumberOfSigmasTPC(fCurrentPositiveESDTrack,AliPID::kElectron)>fPIDnSigmaBelowElectronLine &&
+ fgESDpid->NumberOfSigmasTPC(fCurrentPositiveESDTrack,AliPID::kElectron)<fPIDnSigmaAboveElectronLine&&
+ fgESDpid->NumberOfSigmasTPC(fCurrentPositiveESDTrack,AliPID::kPion)<fPIDnSigmaAbovePionLineHighPt){
+ // iResult=kFALSE;
+ if(fHistograms != NULL){
+ fHistograms->FillHistogram("ESD_CutdEdxSigmaPionLine_InvMass",GetMotherCandidateMass());
+ // to avoid filling the other cut histograms. So in this case fUpdateV0AlreadyCalled also serves as a flag for the histogram filling
+ // it will anyway be set to true at the end of the UpdateV0Information function, and there are no return until the end
+ //fUpdateV0AlreadyCalled = kTRUE;
+ }
+ fCurrentV0IndexNumber++;
+ continue;
+ }
+ }
+
+ if( fCurrentNegativeESDTrack->P()>fPIDMaxPnSigmaAbovePionLine){
+ if(fgESDpid->NumberOfSigmasTPC(fCurrentNegativeESDTrack,AliPID::kElectron)>fPIDnSigmaBelowElectronLine &&
+ fgESDpid->NumberOfSigmasTPC(fCurrentNegativeESDTrack,AliPID::kElectron)<fPIDnSigmaAboveElectronLine&&
+ fgESDpid->NumberOfSigmasTPC(fCurrentNegativeESDTrack,AliPID::kPion)<fPIDnSigmaAbovePionLineHighPt){
+ // iResult=kFALSE;
+ if(fHistograms != NULL){
+ fHistograms->FillHistogram("ESD_CutdEdxSigmaPionLine_InvMass",GetMotherCandidateMass());
+ // to avoid filling the other cut histograms. So in this case fUpdateV0AlreadyCalled also serves as a flag for the histogram filling
+ // it will anyway be set to true at the end of the UpdateV0Information function, and there are no return until the end
+ //fUpdateV0AlreadyCalled = kTRUE;
+ }
+ fCurrentV0IndexNumber++;
+ continue;
+ }
+ }
+
+
if(fDoCF){
fCFManager->GetParticleContainer()->Fill(containerInput,kStepdEdxPionrejection); // for CF
}
}
} // RRnew end
+ if(fDoPhotonAsymmetryCut == kTRUE){
+ if( fNegativeTrackLorentzVector->P()>fMinPPhotonAsymmetryCut ){
+ Double_t trackNegAsy=0;
+ if (fCurrentMotherKFCandidate->GetP()!=0.){
+ trackNegAsy= fNegativeTrackLorentzVector->P()/fMotherCandidateLorentzVector->P();
+ }
+ if( trackNegAsy<fMinPhotonAsymmetry ||trackNegAsy>(1.- fMinPhotonAsymmetry)){
+ if(fHistograms != NULL){
+ fHistograms->FillHistogram("ESD_CutPhotonAsymmetry_InvMass",GetMotherCandidateMass());
+ // to avoid filling the other cut histograms. So in this case fUpdateV0AlreadyCalled also serves as a flag for the histogram filling
+ // it will anyway be set to true at the end of the UpdateV0Information function, and there are no return until the end
+ //fUpdateV0AlreadyCalled = kTRUE;
+ }
+ fCurrentV0IndexNumber++;
+ continue;
+ }
+ }
+
+ if( fPositiveTrackLorentzVector->P()>fMinPPhotonAsymmetryCut ){
+ Double_t trackPosAsy=0;
+ if (fCurrentMotherKFCandidate->GetP()!=0.){
+ trackPosAsy= fPositiveTrackLorentzVector->P()/fMotherCandidateLorentzVector->P();
+ }
+ if( trackPosAsy<fMinPhotonAsymmetry ||trackPosAsy>(1.- fMinPhotonAsymmetry)){
+ if(fHistograms != NULL){
+ fHistograms->FillHistogram("ESD_CutPhotonAsymmetry_InvMass",GetMotherCandidateMass());
+ // to avoid filling the other cut histograms. So in this case fUpdateV0AlreadyCalled also serves as a flag for the histogram filling
+ // it will anyway be set to true at the end of the UpdateV0Information function, and there are no return until the end
+ //fUpdateV0AlreadyCalled = kTRUE;
+ }
+ fCurrentV0IndexNumber++;
+ continue;
+ }
+ }
+ }
//checks if we have a prim vertex
//if(fESDEvent->GetPrimaryVertex()->GetNContributors()<=0) {
if(GetNumberOfContributorsVtx()<=0) {
// fCurrentEventGoodV0s.push_back(*fCurrentMotherKFCandidate);
+ if(fPositiveTrackPID==-11 && fNegativeTrackPID==11){
+ fCurrentMotherKFCandidate->E()=fCurrentMotherKFCandidate->GetP();
+ }
+
+ if(fDoMC&& fUseMCPSmearing>0){
+ SmearKFParticle(fCurrentMotherKFCandidate);
+
+ }
+
new((*fCurrentEventGoodV0s)[fCurrentEventGoodV0s->GetEntriesFast()]) AliKFParticle(*fCurrentMotherKFCandidate);
fV0Pindex.push_back(fCurrentV0->GetPindex());
fV0Nindex.push_back(fCurrentV0->GetNindex());
return firstTPCRow;
}
+void AliV0Reader::SmearKFParticle(AliKFParticle * kfParticle)
+{
+ Double_t facPBrem = 1.;
+ Double_t facPSig = 0.;
+
+ Double_t phi=0.;
+ Double_t theta=0.;
+ Double_t P=0.;
+
+ P=kfParticle->GetP();
+ phi=kfParticle->GetPhi();
+ if( kfParticle->GetP()!=0){
+ theta=acos( kfParticle->Pz()/ kfParticle->GetP());
+ }
+
+ if( fPSigSmearing != 0. || fPSigSmearingCte!=0. ){
+ facPSig = TMath::Sqrt(fPSigSmearingCte*fPSigSmearingCte+fPSigSmearing*fPSigSmearing*P*P)*fRandom.Gaus(0.,1.);
+ }
+
+ if( fPBremSmearing != 1.){
+ if(fBrem!=NULL){
+ facPBrem = fBrem->GetRandom();
+ }
+ }
+
+ kfParticle->Px() = facPBrem* (1+facPSig)* P*sin(theta)*cos(phi) ;
+ kfParticle->Py() = facPBrem* (1+facPSig)* P*sin(theta)*sin(phi) ;
+ kfParticle->Pz() = facPBrem* (1+facPSig)* P*cos(theta) ;
+ kfParticle->E() = kfParticle->GetP();
+}
#include "AliCFManager.h"
#include "AliGammaConversionBGHandler.h"
#include "AliESDpid.h"
+#include "TF1.h"
+#include "TRandom3.h"
class TClonesArray;
class TFormula;
class AliCFContainer; // for CF
//class AliESDpid; // for dEdx cut based on nSigma to particle lines
class AliESDtrackCuts;
+class TF1;
+class TRandom3;
class AliV0Reader : public TObject {
*/
void SetPIDnSigmaAbovePionLine(Double_t nSigmaAbovePion){fPIDnSigmaAbovePionLine=nSigmaAbovePion;}
+ /*
+ * Sets the PIDnSigmaAbovePion cut value for the tracks.
+ */
+ void SetPIDnSigmaAbovePionLineHighPt(Double_t nSigmaAbovePionHighPt){fPIDnSigmaAbovePionLineHighPt=nSigmaAbovePionHighPt;}
+
/*
* Sets the PIDMinPnSigmaAbovePion cut value for the tracks.
*/
void SetDodEdxSigmaCut( Bool_t dodEdxSigmaCut){fDodEdxSigmaCut=dodEdxSigmaCut;}
void SetDoTOFsigmaCut( Bool_t doTOFsigmaCut){fDoTOFsigmaCut=doTOFsigmaCut;} //RRnewTOF
+ void SetDoPhotonAsymmetryCut( Bool_t doPhotonAsymmetryCut){fDoPhotonAsymmetryCut=doPhotonAsymmetryCut;}
+ void SetMinPPhotonAsymmetryCut(Double_t minPPhotonAsymmetryCut){fMinPPhotonAsymmetryCut=minPPhotonAsymmetryCut;}
+ void SetMinPhotonAsymmetry(Double_t minPhotonAsymmetry){fMinPhotonAsymmetry=minPhotonAsymmetry;}
/*
* Sets the flag to enable/disable the cut dedx N sigma for Kaon Rejection at low p
*/
void SetUseCorrectedTPCClsInfo(Bool_t flag){fUseCorrectedTPCClsInfo = flag;}
Bool_t GetUseCorrectedTPCClsInfo() const {return fUseCorrectedTPCClsInfo;}
+ void SetUseMCPSmearing(Int_t useMCPSmearing) {fUseMCPSmearing=useMCPSmearing;}
+ void SetPBremSmearing(Double_t pBremSmearing){fPBremSmearing=pBremSmearing;}
+ void SetPSigSmearing(Double_t pSigSmearing){fPSigSmearing=pSigSmearing;}
+ void SetPSigSmearingCte(Double_t pSigSmearingCte){fPSigSmearingCte=pSigSmearingCte;}
+ void SmearKFParticle(AliKFParticle * kfParticle);
+
private:
AliStack * fMCStack; // pointer to MonteCarlo particle stack
// AliMCEventHandler* fMCTruth; // for CF pointer to the MC object
Double_t fTofPIDnSigmaAboveElectronLine; // sigma cut RRnewTOF
Double_t fTofPIDnSigmaBelowElectronLine; // sigma cut RRnewTOF
Double_t fPIDnSigmaAbovePionLine; // sigma cut
+ Double_t fPIDnSigmaAbovePionLineHighPt; // sigma cut
Double_t fPIDMinPnSigmaAbovePionLine; // sigma cut
Double_t fPIDMaxPnSigmaAbovePionLine; // sigma cut
Double_t fDoKaonRejectionLowP; // Kaon rejection at low p
Int_t fNumberOfGoodV0s; // number of good V0s
Int_t fIsHeavyIon; // flag
Bool_t fUseCorrectedTPCClsInfo;
-
- ClassDef(AliV0Reader,20) // RRnew
+ Int_t fUseMCPSmearing;
+ Double_t fPBremSmearing;
+ Double_t fPSigSmearing;
+ Double_t fPSigSmearingCte;
+ TRandom3 fRandom;
+ TF1 * fBrem;
+ Bool_t fDoPhotonAsymmetryCut; // flag to use the PhotonAsymetryCut
+ Double_t fMinPPhotonAsymmetryCut;
+ Double_t fMinPhotonAsymmetry;
+ ClassDef(AliV0Reader,22) // RRnewTOF
};
inline void AliV0Reader::InitESDpid(Int_t type)
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-const int c_array_size = 27; // RRnewTOF c_array_size was increased to 27 in order to put a TOF PID cut on electrons
+const int c_array_size = 29; // RRnewTOF c_array_size was increased to 27 in order to put a TOF PID cut on electrons
class AliAnalysisDataContainer;
class AliGammaConversionHistograms;
//Svein
Bool_t kGCRunGammaJetTask = kFALSE;
/** ---------------------------------- define cuts here ------------------------------------*/
-TString kGCAnalysisCutSelectionId="900356204010033210220000000"; // do not change here, use -set-cut-selection in argument instead
+TString kGCAnalysisCutSelectionId="90035620401003321022000000011"; // do not change here, use -set-cut-selection in argument instead
Int_t kGCNEventsForBGCalculation=20;
Int_t kGCUseCentrality = 0;
Int_t kGCUseCentralityBin = 0;
Int_t kGCUseCorrectedTPCClsInfo = 0;
+Int_t kGCUseMCPSmearing=0;
+Double_t kGCPBremSmearing=1.;
+Double_t kGCPSigSmearing=0.;
+Double_t kGCPSigSmearingCte=0.;
/** ---------------------------------- define pi0 dalitz cuts here ------------------------------------*/
Bool_t kGCplotESDCutZ = kTRUE;
Bool_t kGCplotESDCutMinClsTPC = kTRUE;
Bool_t kGCplotESDCutMinClsTPCToF = kTRUE;
+Bool_t kGCplotESDCutPhotonAsymmetry = kTRUE;
Bool_t kGCplotESDGoodV0s = kTRUE;
Bool_t kGCplotESDAllV0s = kTRUE;
Bool_t kGCplotESDAllV0sCurrentFinder = kTRUE;
Double_t kGCPIDnSigmaAbovePionLine=0;
Double_t kGCPIDMinPnSigmaAbovePionLine=1.;
Double_t kGCPIDMaxPnSigmaAbovePionLine=3.;
+Double_t kGCPIDnSigmaAbovePionLineHighPt=0;
Bool_t kGCuseTOFpid = kFALSE; // RRnewTOF start //////////
Double_t kGCtofPIDnSigmaBelowElectronLine=-100;
Double_t kGCHighPtQtMax=100.; // RRnew
Double_t kGCPtBorderForQt=100.; // RRnew
+/**----Flag to apply cut on the photon asymmetry -----*/
+Bool_t kGCdoPhotonAsymmetryCut= kTRUE;
+Double_t kGCMinPPhotonAsymmetryCut=100.;
+Double_t kGCMinPhotonAsymmetry=0.;
Bool_t scanArguments(TString arguments){
v0Reader->SetPIDnSigmaAboveElectronLine(kGCPIDnSigmaAboveElectronLine);
v0Reader->SetPIDnSigmaBelowElectronLine(kGCPIDnSigmaBelowElectronLine);
v0Reader->SetPIDnSigmaAbovePionLine(kGCPIDnSigmaAbovePionLine);
+ v0Reader->SetPIDnSigmaAbovePionLineHighPt(kGCPIDnSigmaAbovePionLineHighPt);
v0Reader->SetPIDMinPnSigmaAbovePionLine(kGCPIDMinPnSigmaAbovePionLine);
v0Reader->SetPIDMaxPnSigmaAbovePionLine(kGCPIDMaxPnSigmaAbovePionLine);
v0Reader->SetOnFlyFlag(kGCUseOnFlyV0Finder);
v0Reader->SetQtMax(kGCQtMax);
v0Reader->SetHighPtQtMax(kGCHighPtQtMax); // RRnew
v0Reader->SetPtBorderForQt(kGCPtBorderForQt); // RRnew
+
+ v0Reader->SetDoPhotonAsymmetryCut(kGCdoPhotonAsymmetryCut);
+ v0Reader->SetMinPPhotonAsymmetryCut(kGCMinPPhotonAsymmetryCut);
+ v0Reader->SetMinPhotonAsymmetry(kGCMinPhotonAsymmetry);
+
+
kGCNEventsForBGCalculation= kGCnumberOfRotationEventsForBG;
cout<< "number of Events used for mixing::"<<kGCNEventsForBGCalculation<<endl;
v0Reader->SetNEventsForBG(kGCNEventsForBGCalculation);
if(kGCUseCentrality){
gammaconversion->SetUseCentralityBin(kGCUseCentralityBin);
}
-
-
+ v0Reader->SetUseMCPSmearing(kGCUseMCPSmearing);
+ v0Reader->SetPBremSmearing(kGCPBremSmearing);
+ v0Reader->SetPSigSmearing(kGCPSigSmearing);
+ v0Reader->SetPSigSmearingCte(kGCPSigSmearingCte);
// for CF
if(kGCplotESDCutZ == kTRUE){histograms->AddHistogram("ESD_CutZ_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
if(kGCplotESDCutMinClsTPC == kTRUE){histograms->AddHistogram("ESD_CutMinNClsTPC_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
if(kGCplotESDCutMinClsTPCToF == kTRUE){histograms->AddHistogram("ESD_CutMinNClsTPCToF_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
+ if(kGCplotESDCutPhotonAsymmetry== kTRUE){histograms->AddHistogram("ESD_CutPhotonAsymmetry_InvMass" ,"Out of reconstruction area" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
if(kGCplotESDGoodV0s == kTRUE){histograms->AddHistogram("ESD_GoodV0s_InvMass" ,"Good V0s" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
if(kGCplotESDAllV0s == kTRUE){histograms->AddHistogram("ESD_AllV0s_InvMass" ,"All V0s" , kGCnXBinsGammaMass, kGCfirstXBinGammaMass, kGClastXBinGammaMass,"","");}
Int_t useCentrality=array[24];
Int_t centralityBin=array[25];
Int_t TOFelectronPID=array[26]; // RRnewTOF
+ Int_t useMCPSmearing=array[27];
+ Int_t doPhotonAsymmetryCut=array[28];
+ cout<<"doPhotonAsymmetryCut::"<<doPhotonAsymmetryCut<<endl;
+ cout<<"useMCPSmearing::"<<useMCPSmearing<<endl;
+ cout<<"TOFelectronPID: "<<TOFelectronPID<<endl; // RRnewTOF
cout<<"CentralityBin::"<< centralityBin <<endl;
cout<<"Use Centrality::"<< useCentrality <<endl;
cout<<"Heavy Ion::"<< isHeavyIon<<endl;
cout<<"eProbCut: "<< eProbCut<<endl;
cout<<"v0FinderType: "<<v0FinderType <<endl;
cout<<"goodId: "<<goodId <<endl;
- cout<<"TOFelectronPID: "<<TOFelectronPID<<endl; // RRnewTOF
+
if(goodId !=9){
cout<<"Analysis Cut Selection too short or does not start with 9"<<endl;
switch(pidedxSigmaCut){
case 0: // -10
kGCPIDnSigmaAbovePionLine=-10;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
break;
case 1: // 0
kGCPIDnSigmaAbovePionLine=0;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
break;
case 2: // 1
kGCPIDnSigmaAbovePionLine=1;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
break;
case 3: // 1
kGCPIDnSigmaAbovePionLine=-1;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
break;
case 4: // 1
kGCPIDnSigmaAbovePionLine=-1.5;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
break;
case 5: // 1
kGCPIDnSigmaAbovePionLine=2.;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
+ break;
+ case 6: // 1
+ kGCPIDnSigmaAbovePionLine=2.;
+ kGCPIDnSigmaAbovePionLineHighPt=0.5;
+ break;
+ case 7: // 1
+ kGCPIDnSigmaAbovePionLine=3.5;
+ kGCPIDnSigmaAbovePionLineHighPt=-10;
+ break;
+ case 8: // 1
+ kGCPIDnSigmaAbovePionLine=2.;
+ kGCPIDnSigmaAbovePionLineHighPt=1.;
break;
-
default:
return iResult;
}
return iResult;
} //////////////////////// RRnewTOF end //////////////////////////////////////////////////////////////////////////
+ switch(useMCPSmearing){
+ case 0:
+ kGCUseMCPSmearing=0;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.;
+ kGCPSigSmearingCte=0.;
+ break;
+ case 1:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.0e-14;
+ kGCPSigSmearing=0.;
+ kGCPSigSmearingCte=0.;
+ break;
+ case 2:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.0e-15;
+ kGCPSigSmearing=0.0;
+ kGCPSigSmearingCte=0.;
+ break;
+ case 3:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.003;
+ kGCPSigSmearingCte=0.002;
+ break;
+ case 4:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.003;
+ kGCPSigSmearingCte=0.007;
+ break;
+ case 5:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.003;
+ kGCPSigSmearingCte=0.016;
+ break;
+ case 6:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.007;
+ kGCPSigSmearingCte=0.016;
+ break;
+ case 7:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.0e-16;
+ kGCPSigSmearing=0.0;
+ kGCPSigSmearingCte=0.;
+ break;
+ case 8:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.007;
+ kGCPSigSmearingCte=0.014;
+ break;
+ case 9:
+ kGCUseMCPSmearing=1;
+ kGCPBremSmearing=1.;
+ kGCPSigSmearing=0.007;
+ kGCPSigSmearingCte=0.011;
+ break;
+
+ default:
+ return iResult;
+ }
+ switch(doPhotonAsymmetryCut){
+ case 0:
+ kGCdoPhotonAsymmetryCut=0;
+ kGCMinPPhotonAsymmetryCut=100.;
+ kGCMinPhotonAsymmetry=0.;
+ break;
+ case 1:
+ kGCdoPhotonAsymmetryCut=1;
+ kGCMinPPhotonAsymmetryCut=3.5;
+ kGCMinPhotonAsymmetry=0.04;
+ break;
+ case 2:
+ kGCdoPhotonAsymmetryCut=1;
+ kGCMinPPhotonAsymmetryCut=3.5;
+ kGCMinPhotonAsymmetry=0.06;
+ break;
+ default:
+ return iResult;
+ }
+
iResult = 1;
return iResult;
ASSIGNARRAY(24);
ASSIGNARRAY(25);
ASSIGNARRAY(26); // RRnewTOF
+ ASSIGNARRAY(27);
+ ASSIGNARRAY(28);
}
}