-class KirConfig
+class RichConfig
{
RQ_OBJECT()
public:
kPMD=8192,kDIPO=16384,kEMCAL=32768,kVZERO=65536,kMUON=131072,kZDC=262144,kSHILD=524288};
enum EProcesses {kDCAY=1,kPAIR=2,kCOMP=4,kPHOT=8,kPFIS=16,kDRAY=32,kANNI=64,kBREM=128,kMUNU=256,kCKOV=512,kHADR=1024,kLOSS=2048,kMULS=4096,
kRAYL=8192};
- enum EGenTypes {kGun1,kGun7,kPythia7,kHijing,kHijingPara};
+ enum EGenTypes {kGun1=100,kGun7,kPythia7,kHijing,kHijingPara};
- KirConfig(const char*sFileName);
- ~KirConfig() {Info("ctor","");fMain->Cleanup(); delete fMain;}
+ RichConfig(const char*sFileName);
+ ~RichConfig() {Info("ctor","");fMain->Cleanup(); delete fMain;}
void AddDetector(Int_t id) {fDetectors+=id; if(id==kTRD || id==kTOF) fDetButGrp->SetButton(kFRAME);}
void RemoveDetector(Int_t id) {fDetectors-=id; if(id==kFRAME) {fDetButGrp->SetButton(kTRD,kFALSE);fDetButGrp->SetButton(kTOF,kFALSE);}}
void AddProcess(Int_t id) {fProcesses+=id;}
TGMainFrame *fMain;//main window poiter
TGComboBox *fRichVersionCombo; TGButton *fRichTopChkBtn,*fRichDeclusterChkBtn,*fRichSagChkBtn,*fRichRadioSrcChkBtn;//RICH
TGButton *fMagFldChkBtn; //MAG
- TGComboBox *fGenTypeCombo,*fGenPartIdCombo,*fGenMomCombo,*fGenChamberCombo; TGNumberEntry *fGenNprimEntry;//GEN
+ TGComboBox *fGenTypeCombo,*fGenPartIdCombo,*fGenMinMomCombo,*fGenMaxMomCombo,*fGenChamberCombo; TGNumberEntry *fGenNprimEntry;//GEN
Int_t fDetectors; TGButtonGroup *fDetButGrp; //DETECTORS
Int_t fProcesses;
char *fFileName;
-};//class KirConfig
-
-KirConfig::KirConfig(const char *sFileName)
-{
+};//class RichConfig
+//__________________________________________________________________________________________________
+RichConfig::RichConfig(const char *sFileName)
+{// creates configuration file
fFileName=sFileName;
fDetectors=0;
// Create main frame
fMain=new TGMainFrame(gClient->GetRoot(),500,400);
-// fMain->Connect("CloseWindow()","KirConfig",this,"CloseWindow()");
+// fMain->Connect("CloseWindow()","RichConfig",this,"CloseWindow()");
fMain->AddFrame(pHorFrame=new TGHorizontalFrame(fMain,100,200));
//RICH
pHorFrame->AddFrame(pVerFrame=new TGVerticalFrame(pHorFrame,100,200));
//Generator
pVerFrame->AddFrame(pGenGrpFrm=new TGGroupFrame(pHorFrame,"Generator"));
pGenGrpFrm->AddFrame(fGenTypeCombo=new TGComboBox(pGenGrpFrm,100));
- fGenTypeCombo->AddEntry("gun to single chamber",kGun1); fGenTypeCombo->AddEntry("gun to all chambers",kGun7);
+ fGenTypeCombo->AddEntry("gun to single chamber",kGun1);
+ fGenTypeCombo->AddEntry("gun to all chambers",kGun7);
fGenTypeCombo->AddEntry("7 guns on top of Pythia",kPythia7);
- fGenTypeCombo->AddEntry("HIJING",kHijing); fGenTypeCombo->AddEntry("parametrized HIJING",kHijingPara);
+ fGenTypeCombo->AddEntry("HIJING",kHijing);
+ fGenTypeCombo->AddEntry("parametrized HIJING",kHijingPara);
+ fGenTypeCombo->AddEntry("Sr90 source",kSr90);
fGenTypeCombo->Select(kHijingPara);
fGenTypeCombo->Resize(160,20);
fGenPartIdCombo->AddEntry("Kaon-",kKMinus);
fGenPartIdCombo->AddEntry("Proton",kProton);
fGenPartIdCombo->AddEntry("AntiProton",kProtonBar);
- fGenPartIdCombo->Select(kPiPlus); fGenPartIdCombo->Resize(160,20);
+ fGenPartIdCombo->Select(kProton); fGenPartIdCombo->Resize(160,20);
- pGenGrpFrm->AddFrame(fGenMomCombo=new TGComboBox(pGenGrpFrm,100)); //particle energy for guns
- fGenMomCombo->AddEntry("1.5 GeV",15);
- fGenMomCombo->AddEntry("2.0 Gev",20);
- fGenMomCombo->AddEntry("2.5 GeV",25);
- fGenMomCombo->AddEntry("3.0 GeV",30);
- fGenMomCombo->AddEntry("3.5 GeV",35);
- fGenMomCombo->AddEntry("4.0 GeV",40);
- fGenMomCombo->AddEntry("4.5 GeV",45);
- fGenMomCombo->Select(40); fGenMomCombo->Resize(160,20);
+ pGenGrpFrm->AddFrame(fGenMinMomCombo=new TGComboBox(pGenGrpFrm,100)); //particle energy for guns
+ fGenMinMomCombo->AddEntry("0.5 GeV", 5);
+ fGenMinMomCombo->AddEntry("1.0 GeV",10);
+ fGenMinMomCombo->AddEntry("1.5 GeV",15);
+ fGenMinMomCombo->AddEntry("2.0 Gev",20);
+ fGenMinMomCombo->AddEntry("2.5 GeV",25);
+ fGenMinMomCombo->AddEntry("3.0 GeV",30);
+ fGenMinMomCombo->AddEntry("3.5 GeV",35);
+ fGenMinMomCombo->AddEntry("4.0 GeV",40);
+ fGenMinMomCombo->AddEntry("4.5 GeV",45);
+ fGenMinMomCombo->Select(10); fGenMinMomCombo->Resize(160,20);
+
+ pGenGrpFrm->AddFrame(fGenMaxMomCombo=new TGComboBox(pGenGrpFrm,100)); //particle energy for guns
+ fGenMaxMomCombo->AddEntry("1.0 GeV",10);
+ fGenMaxMomCombo->AddEntry("1.5 GeV",15);
+ fGenMaxMomCombo->AddEntry("2.0 Gev",20);
+ fGenMaxMomCombo->AddEntry("2.5 GeV",25);
+ fGenMaxMomCombo->AddEntry("3.0 GeV",30);
+ fGenMaxMomCombo->AddEntry("3.5 GeV",35);
+ fGenMaxMomCombo->AddEntry("4.0 GeV",40);
+ fGenMaxMomCombo->AddEntry("4.5 GeV",45);
+ fGenMaxMomCombo->Select(40); fGenMaxMomCombo->Resize(160,20);
pGenGrpFrm->AddFrame(fGenChamberCombo=new TGComboBox(pGenGrpFrm,100)); //chamber number in case of gun1
for(int i=1;i<=7;i++) fGenChamberCombo->AddEntry(Form("Chamber %i",i),i);
// Magnetic Field
pVerFrame->AddFrame(pFldGrpFrm=new TGGroupFrame(pHorFrame,"Magnetic Field"));
pFldGrpFrm->AddFrame(fMagFldChkBtn=new TGCheckButton(pFldGrpFrm,"On/Off"));
- fMagFldChkBtn->SetState(kButtonUp);
+ fMagFldChkBtn->SetState(kButtonDown);
//Detectors
pHorFrame->AddFrame(fDetButGrp=new TGButtonGroup(pHorFrame,"Detectors"));
- fDetButGrp->Connect("Pressed(Int_t)","KirConfig",this,"AddDetector(Int_t)");
- fDetButGrp->Connect("Released(Int_t)","KirConfig",this,"RemoveDetector(Int_t)");
+ fDetButGrp->Connect("Pressed(Int_t)","RichConfig",this,"AddDetector(Int_t)");
+ fDetButGrp->Connect("Released(Int_t)","RichConfig",this,"RemoveDetector(Int_t)");
new TGCheckButton(fDetButGrp,"PIPE" ,kPIPE));
new TGCheckButton(fDetButGrp,"ITS" ,kITS));
new TGCheckButton(fDetButGrp,"TPC" ,kTPC));
new TGCheckButton(fDetButGrp,"SHILD" ,kSHILD));
//Processes
pHorFrame->AddFrame(pProcButGrp=new TGButtonGroup(pHorFrame,"Processes"));
- pProcButGrp->Connect("Pressed(Int_t)","KirConfig",this,"AddProcess(Int_t)");
- pProcButGrp->Connect("Released(Int_t)","KirConfig",this,"RemoveProcess(Int_t)");
+ pProcButGrp->Connect("Pressed(Int_t)","RichConfig",this,"AddProcess(Int_t)");
+ pProcButGrp->Connect("Released(Int_t)","RichConfig",this,"RemoveProcess(Int_t)");
new TGCheckButton(pProcButGrp,"DCAY decay",kDCAY)); pProcButGrp->SetButton(kDCAY);
new TGCheckButton(pProcButGrp,"PAIR pair production",kPAIR)); pProcButGrp->SetButton(kPAIR);
new TGCheckButton(pProcButGrp,"COMP Compton",kCOMP)); pProcButGrp->SetButton(kCOMP);
//File
fMain->AddFrame(pFileHorFrm=new TGHorizontalFrame(fMain,100,200));
pFileHorFrm->AddFrame(pCreateBtn=new TGTextButton(pFileHorFrm,"Create"));
- pCreateBtn->Connect("Clicked()","KirConfig",this,"CreateConfigFile()");
+ pCreateBtn->Connect("Clicked()","RichConfig",this,"CreateConfigFile()");
pFileHorFrm->AddFrame(new TGLabel(pFileHorFrm,Form(" config file as %s",fFileName)));
fMain->MapSubwindows();
fMain->Layout();
- fMain->SetWindowName("Create AliROOT Config script");
+ fMain->SetWindowName("Create AliROOT scripts");
fMain->MapWindow();
}//KirCondig::ctor
-
-void KirConfig::CreateConfigFile()
+//__________________________________________________________________________________________________
+void RichConfig::CreateConfigFile()
{
FILE *fp=fopen(fFileName,"w"); if(!fp){Info("CreateConfigFile","Cannot open output file:%sn",fFileName);return;}
switch(fGenTypeCombo->GetSelected()){
case kHijingPara:
fprintf(fp," AliGenHIJINGpara *pGen=new AliGenHIJINGpara(%i);\n",(int)fGenNprimEntry->GetNumber());
- fprintf(fp," pGen->SetMomentumRange(0,999); pGen->SetPhiRange(0,360); pGen->SetThetaRange(%f,%f);\n",Eta2Theta(8),Eta2Theta(-8));
+ fprintf(fp," pGen->SetMomentumRange(0,999); pGen->SetThetaRange(%f,%f); pGen->SetPhiRange(0,360);\n",Eta2Theta(8),Eta2Theta(-8));
fprintf(fp," pGen->SetOrigin(0,0,0); pGen->SetSigma(0,0,0);\n");
fprintf(fp," pGen->Init();\n");
break;
case kGun1:
- fprintf(fp," AliGenFixed *pGen=new AliGenFixed(1);\n");
- fprintf(fp," pGen->SetPart(%i); pGen->SetMomentum(%3.1f); pGen->SetOrigin(0,0,0);\n",fGenPartIdCombo->GetSelected(),float(fGenMomCombo->GetSelected())/10);
- fprintf(fp," pGen->SetPhiRange(pRICH->C(%i)->PhiD()); pGen->SetThetaRange(pRICH->C(%i)->ThetaD()-2);\n",fGenChamberCombo->GetSelected(),fGenChamberCombo->GetSelected());
+ fprintf(fp," AliGenBox *pGen=new AliGenBox(1);\n");
+ fprintf(fp," pGen->SetPart(%i); pGen->SetOrigin(0,0,0);\n",fGenPartIdCombo->GetSelected());
+ fprintf(fp," pGen->SetMomentumRange(%3.1f,%3.1f); \n",float(fGenMinMomCombo->GetSelected())/10, float(fGenMaxMomCombo->GetSelected())/10);
+ fprintf(fp," pGen->SetThetaRange(pRICH->C(%i)->ThetaD()-3,pRICH->C(%i)->ThetaD()-1); \n",fGenChamberCombo->GetSelected(),fGenChamberCombo->GetSelected());
+ fprintf(fp," pGen->SetPhiRange(pRICH->C(%i)->PhiD()-1,pRICH->C(%i)->PhiD()+1); \n",fGenChamberCombo->GetSelected(),fGenChamberCombo->GetSelected());
fprintf(fp," pGen->Init();\n");
break;
case kGun7:
fprintf(fp," AliGenCocktail *pCocktail=new AliGenCocktail();\n");
fprintf(fp," for(int i=1;i<=7;i++){\n");
fprintf(fp," AliGenFixed *pFixed=new AliGenFixed(1);\n");
- fprintf(fp," pFixed->SetPart(%i); pFixed->SetMomentum(2.5+i*0.4); pFixed->SetOrigin(0,0,0);\n",fGenPartIdCombo->GetSelected());
- fprintf(fp," pFixed->SetPhiRange(pRICH->C(i)->PhiD()); pFixed->SetThetaRange(pRICH->C(i)->ThetaD()-2);\n");
+ fprintf(fp," pFixed->SetPart(%i); pFixed->SetMomentum(1.0+i*0.5); pFixed->SetOrigin(0,0,0);\n",fGenPartIdCombo->GetSelected());
+ fprintf(fp," pFixed->SetPhi(pRICH->C(i)->PhiD()); pFixed->SetTheta(pRICH->C(i)->ThetaD()-2);\n");
fprintf(fp," pCocktail->AddGenerator(pFixed,Form(\"Fixed %i\",i),1);\n }\n");
fprintf(fp," pCocktail->Init();\n");
break;
fprintf(fp," pPythia->SetProcess(kPyMb); pPythia->SetEnergyCMS(14000);\n");
fprintf(fp," pCocktail->AddGenerator(pPythia,\"Pythia\",1);\n");
fprintf(fp," pCocktail->Init();\n");
+ case kSr90:
+ fprintf(fp," AliGenRadioactive *pGen=new AliGenRadioactive(kSr90,%i);\n",(int)fGenNprimEntry->GetNumber());
+ fprintf(fp," pGen->SetOrigin(0,0,0); pGen->SetSigma(0.1,0.1,0.05);\n");
+ fprintf(fp," pGen->Init();\n");
+ break;
+ case kHijing:
+ fprintf(fp," AliGenHijing *pGen=new AliGenHijing(-1); pGen->SetEnergyCMS(5500); pGen->SetReferenceFrame(\"CMS\");\n");
+ fprintf(fp," pGen->SetProjectile(\"A\", 208, 82); pGen->SetTarget(\"A\", 208, 82);\n");
+ fprintf(fp," pGen->SetJetQuenching(0); pGen->SetShadowing(0);\n");
+ fprintf(fp," pGen->KeepFullEvent(); pGen->SetSelectAll(0); \n");
+ fprintf(fp," pGen->SetImpactParameterRange(0., 5.);\n");
+ fprintf(fp," pGen->Init();\n");
break;
}
//central before RICH detectors
fprintf(fp,"\n ::Info(\"RICH private config\",\"Stop\");\n");
fprintf(fp,"}\n");
fclose(fp);
-
+ CreateRichBatch();
// fMain->CloseWindow();
}//CreateConfigFile
-
-KirConfig *p;
+//__________________________________________________________________________________________________
+void RichConfig::CreateRichBatch()
+{//creates RichBatch.C file
+ FILE *fp=fopen("RichBatch.C","w"); if(!fp){Info("CreateRichBatch","Cannot open output file: RichBatch.C");return;}
+
+ fprintf(fp,"void RichBatch(const Int_t iNevents,const Bool_t isDebug,const char *sConfigFileName)\n");
+ fprintf(fp,"{\n");
+ fprintf(fp," gSystem->Exec(\"rm -rf *.root hlt hough ZZZ*\");\n");
+ fprintf(fp," if(isDebug) AliLog::SetGlobalDebugLevel(AliLog::kDebug);\n");
+ fprintf(fp," TStopwatch sw;TDatime time;\n\n");
+
+ fprintf(fp," AliSimulation *pSim=new AliSimulation(sConfigFileName);\n");
+ if(fGenTypeCombo->GetSelected()==kGun1||fGenTypeCombo->GetSelected()==kGun7) {
+ fprintf(fp," pSim->SetRegionOfInterest(kTRUE);\n");
+ fprintf(fp," pSim->SetMakeSDigits(\"TOF RICH\");\n");
+ fprintf(fp," pSim->SetMakeDigitsFromHits(\"ITS TPC TRD\");\n");
+ }
+ fprintf(fp," pSim->Run(iNevents); delete pSim;\n\n");
+
+ fprintf(fp," AliReconstruction *pRec=new AliReconstruction;\n");
+ fprintf(fp," pRec->SetRunLocalReconstruction(\"ITS TPC TRD TOF RICH\");\n");
+ fprintf(fp," pRec->SetFillESD(\"ITS TPC TRD TOF RICH\");\n");
+ fprintf(fp," pRec->Run(); delete pRec;\n\n");
+
+ fprintf(fp," cout<<\"!!!!!!!!!!!!Info in <my/RichBatch.C>: Start time: \";time.Print();\n");
+ fprintf(fp," cout<<\"!!!!!!!!!!!!Info in <my/RichBatch.C>: Stop time: \";time.Set(); time.Print();\n");
+ fprintf(fp," cout<<\"!!!!!!!!!!!!Info in <my/RichBatch.C>: Time used: \";sw.Print();\n\n");
+
+ fprintf(fp," gSystem->Exec(\"touch ZZZ______finished_______ZZZ\");\n");
+ fprintf(fp," gSystem->Exec(\"playwave ~/bin/end.wav\");\n");
+ fprintf(fp,"}\n");
+
+ fclose(fp);
+}//CreateRichBatch()
+//__________________________________________________________________________________________________
+RichConfig *p;
void CreateConfig()
{
- p=new KirConfig("Config.C");
+ p=new RichConfig("Config.C");
}