コード例 #1
0
ファイル: ChatMessage.cpp プロジェクト: airdcnano/airdcnano
string ChatLink::getDisplayText() {
	if (type == TYPE_SPOTIFY) {
		boost::regex regSpotify;
		regSpotify.assign("(spotify:(artist|track|album):[A-Z0-9]{22})", boost::regex_constants::icase);

		if (boost::regex_match(url, regSpotify)) {
			string sType, displayText;
			size_t found = url.find_first_of(":");
			string tmp = url.substr(found+1,url.length());
			found = tmp.find_first_of(":");
			if (found != string::npos) {
				sType = tmp.substr(0,found);
			}

			if (Util::stricmp(sType.c_str(), "track") == 0) {
				displayText = STRING(SPOTIFY_TRACK);
			} else if (Util::stricmp(sType.c_str(), "artist") == 0) {
				displayText = STRING(SPOTIFY_ARTIST);
			} else if (Util::stricmp(sType.c_str(), "album") == 0) {
				displayText = STRING(SPOTIFY_ALBUM);
			}
			return displayText;
		}
		//some other spotify link, just show the original url
	} else if (type == TYPE_MAGNET) {
		Magnet m = Magnet(url);
		if(!m.fname.empty()) {
			return m.fname + " (" + Util::formatBytes(m.fsize) + ")";
		}
	}

	return url;
}
コード例 #2
0
ファイル: ChatMessage.cpp プロジェクト: airdcnano/airdcnano
DupeType ChatLink::updateDupeType(const UserPtr& aUser) {
	if (type == TYPE_RELEASE) {
		if (ShareManager::getInstance()->isDirShared(url)) {
			dupe = DUPE_SHARE;
		} else {
			auto qd = QueueManager::getInstance()->isDirQueued(url);
			if (qd == 1) {
				dupe = DUPE_QUEUE;
			} else if (qd == 2) {
				dupe = DUPE_FINISHED;
			}
		}
	} else if (type == TYPE_MAGNET) {
		Magnet m = Magnet(url);
		dupe = m.getDupeType();
		if (dupe == DUPE_NONE && ShareManager::getInstance()->isTempShared(aUser ? aUser->getCID().toBase32() : Util::emptyString, m.getTTH())) {
			dupe = DUPE_SHARE;
		}
	}
	return dupe;
}
コード例 #3
0
int G4Setup(const int absorberactive = 0,
	    const string &field ="1.5",
	    const EDecayType decayType = TPythia6Decayer::kAll,
	    const bool do_svtx = true,
	    const bool do_preshower = false,
	    const bool do_cemc = true,
	    const bool do_hcalin = true,
	    const bool do_magnet = true,
	    const bool do_hcalout = true,
	    const bool do_pipe = true,
	    const bool do_bbc = true,
	    const bool do_FEMC = false,
	    const bool do_FHCAL = false,
     	    const float magfield_rescale = 1.0) {
  
  //---------------
  // Load libraries
  //---------------

  gSystem->Load("libg4detectors.so");
  gSystem->Load("libg4testbench.so");

  //---------------
  // Fun4All server
  //---------------

  Fun4AllServer *se = Fun4AllServer::instance();

  PHG4Reco* g4Reco = new PHG4Reco();
  g4Reco->set_rapidity_coverage(1.1); // according to drawings

  if (decayType != TPythia6Decayer::kAll) {
    g4Reco->set_force_decay(decayType);
  }
  
  double fieldstrength;
  istringstream stringline(field);
  stringline >> fieldstrength;
  if (stringline.fail()) { // conversion to double fails -> we have a string

    if (field.find("sPHENIX.root") != string::npos) {
      g4Reco->set_field_map(field, 1);
    } else {
      g4Reco->set_field_map(field, 2);
    }
  } else {
    g4Reco->set_field(fieldstrength); // use const soleniodal field
  }
  g4Reco->set_field_rescale(magfield_rescale);
  
  double radius = 0.;

  //----------------------------------------
  // PIPE
  if (do_pipe) radius = Pipe(g4Reco, radius, absorberactive);
  
  //----------------------------------------
  // SVTX
  if (do_svtx) radius = Svtx(g4Reco, radius, absorberactive);

  //----------------------------------------
  // PRESHOWER
  
  if (do_preshower) radius = PreShower(g4Reco, radius, absorberactive);

  //----------------------------------------
  // CEMC
//
  if (do_cemc) radius = CEmc(g4Reco, radius, 8, absorberactive);
//  if (do_cemc) radius = CEmc_Vis(g4Reco, radius, 8, absorberactive);// for visualization substructure of SPACAL, slow to render
  
  //----------------------------------------
  // HCALIN
  
  if (do_hcalin) radius = HCalInner(g4Reco, radius, 4, absorberactive);

  //----------------------------------------
  // MAGNET
  
  if (do_magnet) radius = Magnet(g4Reco, radius, 0, absorberactive);

  //----------------------------------------
  // HCALOUT
  
  if (do_hcalout) radius = HCalOuter(g4Reco, radius, 4, absorberactive);

  //----------------------------------------
  // FEMC

  if ( do_FEMC )
    FEMCSetup(g4Reco, absorberactive);

  //----------------------------------------
  // FHCAL

  if ( do_FHCAL )
    FHCALSetup(g4Reco, absorberactive);

  // sPHENIX forward flux return(s)
  PHG4CylinderSubsystem *flux_return_plus = new PHG4CylinderSubsystem("FWDFLUXRET", 0);
  flux_return_plus->SetLength(10.2);
  flux_return_plus->SetPosition(0,0,335.9);
  flux_return_plus->SetRadius(5.0);
  flux_return_plus->SetLengthViaRapidityCoverage(false);
  flux_return_plus->SetThickness(263.5-5.0);
  flux_return_plus->SetMaterial("G4_Fe");
  flux_return_plus->SetActive(false);
  flux_return_plus->SuperDetector("FLUXRET_ETA_PLUS");
  flux_return_plus->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(flux_return_plus);

  PHG4CylinderSubsystem *flux_return_minus = new PHG4CylinderSubsystem("FWDFLUXRET", 0);
  flux_return_minus->SetLength(10.2);
  flux_return_minus->SetPosition(0,0,-335.9);
  flux_return_minus->SetRadius(5.0);
  flux_return_minus->SetLengthViaRapidityCoverage(false);
  flux_return_minus->SetThickness(263.5-5.0);
  flux_return_minus->SetMaterial("G4_Fe");
  flux_return_minus->SetActive(false);
  flux_return_minus->SuperDetector("FLUXRET_ETA_MINUS");
  flux_return_minus->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(flux_return_minus);


  //----------------------------------------
  // BLACKHOLE
  
  // swallow all particles coming out of the backend of sPHENIX
  PHG4CylinderSubsystem *blackhole = new PHG4CylinderSubsystem("BH", 1);
  blackhole->SetRadius(radius + 10); // add 10 cm
  blackhole->SetLengthViaRapidityCoverage(false);
  blackhole->SetLength(g4Reco->GetWorldSizeZ() - no_overlapp); // make it cover the world in length
  blackhole->BlackHole();
  blackhole->SetThickness(0.1); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  //----------------------------------------
  // FORWARD BLACKHOLEs
  // +Z
  blackhole = new PHG4CylinderSubsystem("BH_FORWARD_PLUS", 1);
  blackhole->SuperDetector("BH_FORWARD_PLUS");
  blackhole->SetRadius(0); // add 10 cm
  blackhole->SetLengthViaRapidityCoverage(false);
  blackhole->SetLength(0.1); // make it cover the world in length
  blackhole->SetPosition(0,0, g4Reco->GetWorldSizeZ()/2. - 0.1  - no_overlapp);
  blackhole->BlackHole();
  blackhole->SetThickness(radius - no_overlapp); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  blackhole = new PHG4CylinderSubsystem("BH_FORWARD_NEG", 1);
  blackhole->SuperDetector("BH_FORWARD_NEG");
  blackhole->SetRadius(0); // add 10 cm
  blackhole->SetLengthViaRapidityCoverage(false);
  blackhole->SetLength(0.1); // make it cover the world in length
  blackhole->SetPosition(0,0, - g4Reco->GetWorldSizeZ()/2. +0.1  + no_overlapp);
  blackhole->BlackHole();
  blackhole->SetThickness(radius - no_overlapp); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  PHG4TruthSubsystem *truth = new PHG4TruthSubsystem();
  g4Reco->registerSubsystem(truth);
  se->registerSubsystem( g4Reco );
}
コード例 #4
0
ファイル: main.c プロジェクト: HiMoore/Dynamic_System
void AOCS(double AOCS_Xupdata[19],double AOCS_Xinitial[14],int N,double AOCS_Y0[100],unsigned char AOCS_Flag0[6],double AOCS_Y[],unsigned char AOCS_Flag[9])
{
	int i;
	double Worbity_CHK,nine_CHK[9];
	all2Xupdate(AOCS_Xupdata,&Time,Wwheel,ThTime); //输出飞轮转速[4]和推力器开启时间[14]
	all2Xinitial(AOCS_Xinitial,Y,Wib,Quatib,&Msat); // 输出卫星位置速度[6],本体相对惯性系在本体系下的姿态角速度[3],本体系相对惯性系的四元数[4],卫星质量[1]

	/*质量更新模型*/
	MsatUPDATE(&Msat,ACS_DMsat,ThTime); //返回质量

	/*环境力矩*/
	//输入为卫星时间,太阳黄经,黄赤交角; 输出为格林尼治视恒星时角,太阳矢量[3],测量系相对惯性系的姿态四元数[4]
	SunVectori(Time,&Yousun,&Aisun,&Jingdu_GreenWitch_inertia, SunInertia, Quatis);/*太阳矢量*/
	//输入为太阳矢量,本体系相对惯性系的四元数[3],太阳帆板安装矩阵[3][3],太阳帆板表面反射系数=0.5,太阳光照射面积=5,
	//太阳光压=9e-6,太阳光压压心到卫星质心的矢径[3],输出本体系下太阳光压力[3]和光压力矩[3]
	SunTorque(SunInertia,Quatib,ACS_Psunb,ACS_niu,ACS_Ssun,ACS_Psun,ACS_Cps,F_Sun,Td_Sun);   /*太阳光压力矩模型*/

	/*执行机构*/
	//输入为推力器开启时间[14],推力器推力系数[14],推力器组喷嘴中心的方向余弦角[14][3],推力器组偏心矢量[14][3]
	//输出本体系下推力器推力[3]和力矩[3]
	Fthrust(ThTime,ACS_KFthurst,ACS_cosattis,ACS_Cattis, F_Th, T_Th);
	//输入为飞轮转速[4],飞轮转动惯量[4]为什么是一维矩阵? 飞轮安装矩阵[4][3], 输出本体系下飞轮组产生的力矩[3]
	Wheel(Wwheel,ACS_Jwheel,ACS_Pwheelb, Twheelb);
	Magnetic(Bci,Quatib,Mags,ACS_PMagb, Tmag);

	/*轨道递推*/
	for(i=0;i<3;i++)
        Fb[i]=F_Th[i]+F_aero[i]+F_Sun[i];/*计算本体系下卫星合外力*/
	orbJ2_rk4(Y,H,Fb,Quatib,Msat); /*轨道动力学模型,利用龙格库塔法递推,得到下一时刻的位置和速度,需要给出初始位置和速度*/
	PV2Six(Y,nine,&Worbity);  /*位置速度转换六根数模型,由位置和速度计算轨道六要素*/
	PV2Six_OLD(Y,nine_CHK,&Worbity_CHK); /*nine[9]:0A,1E,2SI,3DW,4SW,5DM,6SU,7theta,8n*/
	Iner2orbitquat(nine[3],nine[2],nine[6],Quatio);

	/*姿态递推*/
	QuatTatti_rk4(H,Wib,Quatib);/*姿态运动学,递推下一时刻的姿态四元素Qib  */
	for(i=0;i<3;i++)
		Tb[i]=Twheelb[i]+T_Th[i]+Td_geomagnetic[i]+Td_gravity[i]+Td_aero[i]+Td_Sun[i]+Tmag[i];   /*计算卫星合力矩*/
	//输入飞轮转动惯量[4],飞轮转速[4]; 输出飞轮角动量[4]
	WheelMomentum(ACS_Jwheel,Wwheel,MomentumWheel);    /*飞轮角动量计算*/
	//输入飞轮角动量NMS[4](不知道是啥?),飞轮安装矩阵[4][3]; 输出飞轮系统角动量[4]
	WheelSysToThree(MomentumWheel,ACS_Pwheelb,Hwheel);  /*飞轮系统角动量计算 	*/
	//输入飞轮系统角动量,本体相对惯性系的角速度[3],卫星转动惯量[3][3]; 输出卫星角动量[3]
	formHB(Hwheel,Wib,ACS_IBf,Hbody);                /*卫星角动量计算*/
	//输入积分步长[1],卫星角动量[3],卫星合力矩[3],卫星转动惯量[3][3]; 输出本体系相对惯性系的角速度[3]
	BiasattiDynamic_rk4(H,Hbody,Tb,ACS_IBf,Wib);   /*姿态动力学,带轮控系统的刚体动力学,递推下一时刻的角速度Wib*/

	/*天体矢量*/
	//输入为卫星时间+积分步长,太阳黄经,黄赤交角, 输出惯性系下的太阳矢量[3],太阳系相对惯性系的四元数[4],格林尼治视恒星时角[1]*/
	SunVectori(Time+H,&Yousun,&Aisun,&Jingdu_GreenWitch_inertia,SunInertia,Quatis);  /*太阳矢量模型*/
	//输入卫星时间+积分步长, 卫星位置速度[6]; 输出惯性系下月球矢量[3]
	MoonVectori(Time+H,Y,Mooni); /*月球矢量模型*/
	//输入卫星位置速度[6]; 输出惯性系下地球矢量[3]
	EarthVectori(Y,Earthi); /*地心矢量模型*/
    //输入卫星位置速度[6],惯性系下太阳矢量[3], 输出地影标志位:EshadowFlag=1时进入地影;
	EarthShadow(Y,SunInertia,&EshadowFlag);/*地影计算*/

	/*敏感器*/
    //输入太阳矢量[3],本体系相对惯性系的四元数[4],数字太敏1的安装矩阵[3][3],数字太敏1的视场测量极值[1],数字太敏1的噪声系数[1],地影标志位,数字太敏1测量有效标志位
	//输出理论值和带噪声值:太阳矢量在测量系yz和xz平面上的投影分别与z轴的夹角
	Fsun(SunInertia,Quatib,ACS_PFsunb1,ACS_Fsun1Limit,ACS_Fsun1R,EshadowFlag,&Fsun1Flag,&Fsun1out0,&Fsun1out);  /*数字太阳敏感器1测量模型*/
	Fsun(SunInertia,Quatib,ACS_PFsunb2,ACS_Fsun2Limit,ACS_Fsun2R,EshadowFlag,&Fsun2Flag,&Fsun2out0,&Fsun2out);  /*数字太阳敏感器2测量模型*/
	//输入太阳矢量,地球矢量,月球矢量,星敏A光轴指向分别与太阳、地球、月球矢量夹角的临界值[3](单位是度°),星敏A到星体的旋转四元数[4]
	//本体系相对惯性系的四元数[4],星敏A噪声系数[3],星敏A测量有效标志位[1]; 输出星敏A/B安装
	quatstar(SunInertia,Earthi,Mooni,ACS_StarALimit,ACS_StarsbA,Quatib,ACS_quatstarRA,&StarAFlag,QuatsiA0,QuatsiA);    /*星敏感器A测量模型,输出测量四元素*/
	quatstar(SunInertia,Earthi,Mooni,ACS_StarBLimit,ACS_StarsbB,Quatib,ACS_quatstarRB,&StarBFlag,QuatsiB0,QuatsiB);    /*星敏感器B测量模型,输出测量四元素*/
	Gyro(Wib,ACS_Pgyrob1,ACS_NoGyro1,ACS_GyroR1,ACS_GyroRC1,Wgyro10,Wgyro1);        /*平台陀螺测量模型,输出测量角速度*/
	Gyro(Wib,ACS_Pgyrob2,ACS_NoGyro2,ACS_GyroR2,ACS_GyroRC2,Wgyro20,Wgyro2);        /*光纤陀螺测量模型,输出测量角速度*/
	Acceler(F_Th,F_aero,F_Sun,Msat,ACS_Psb,ACS_AccelerR,ACS_AccelerRC,as0,as);   /*加速度计测量模型,输出测量角加速度*/
	Magnet(Bci,Quatib,ACS_PbBB,ACS_MagoutR,Magout0,Magout);  /*磁强计模型,输出测量磁场强度*/

    Distance_in_Radar(r1,r2, &Distance);
    Angel_in_Camera(r1,r2,ACS_StarsbA,Quatib, &Theta_yz, &Theta_yx);

	/*系统输出*/
	Output(AOCS_Y0,AOCS_Flag0,AOCS_Y,AOCS_Flag);

}
コード例 #5
0
ファイル: G4Setup_sPHENIX.C プロジェクト: abinashpun/macros
int G4Setup(const int absorberactive = 0,
	    const string &field ="1.5",
#if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,0)
	    const EDecayType decayType = EDecayType::kAll,
#else
	    const EDecayType decayType = TPythia6Decayer::kAll,
#endif
	    const bool do_tracking = true,
	    const bool do_pstof = true,
	    const bool do_cemc = true,
	    const bool do_hcalin = true,
	    const bool do_magnet = true,
	    const bool do_hcalout = true,
      const bool do_pipe = true,
      const bool do_plugdoor = false,
//	    const bool do_plugdoor = true,
	    const float magfield_rescale = 1.0) {
  
  //---------------
  // Load libraries
  //---------------

  gSystem->Load("libg4detectors.so");
  gSystem->Load("libg4testbench.so");

  //---------------
  // Fun4All server
  //---------------

  Fun4AllServer *se = Fun4AllServer::instance();

  // read-in HepMC events to Geant4 if there is any
  HepMCNodeReader *hr = new HepMCNodeReader();
  se->registerSubsystem(hr);

  PHG4Reco* g4Reco = new PHG4Reco();
  g4Reco->set_rapidity_coverage(1.1); // according to drawings
// uncomment to set QGSP_BERT_HP physics list for productions 
// (default is QGSP_BERT for speed)
  //  g4Reco->SetPhysicsList("QGSP_BERT_HP"); 
#if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,0)
  if (decayType != EDecayType::kAll) 
#else
  if (decayType != TPythia6Decayer::kAll) 
#endif
  {
    g4Reco->set_force_decay(decayType);
  }
  
  double fieldstrength;
  istringstream stringline(field);
  stringline >> fieldstrength;
  if (stringline.fail()) { // conversion to double fails -> we have a string

    if (field.find("sPHENIX.root") != string::npos) {
      g4Reco->set_field_map(field, PHFieldConfig::Field3DCartesian);
    } else {
      g4Reco->set_field_map(field, PHFieldConfig::kField2D);
    }
  } else {
    g4Reco->set_field(fieldstrength); // use const soleniodal field
  }
  g4Reco->set_field_rescale(magfield_rescale);
  
  double radius = 0.;

  //----------------------------------------
  // PIPE
  if (do_pipe) radius = Pipe(g4Reco, radius, absorberactive);
  
  //----------------------------------------
  // TRACKING
  if (do_tracking) radius = Tracking(g4Reco, radius, absorberactive);

  //----------------------------------------
  // PSTOF
  
  if (do_pstof) radius = PSTOF(g4Reco, radius, absorberactive);

  //----------------------------------------
  // CEMC
//
  if (do_cemc) radius = CEmc(g4Reco, radius, 8, absorberactive);
//  if (do_cemc) radius = CEmc_Vis(g4Reco, radius, 8, absorberactive);// for visualization substructure of SPACAL, slow to render
  
  //----------------------------------------
  // HCALIN
  
  if (do_hcalin) radius = HCalInner(g4Reco, radius, 4, absorberactive);

  //----------------------------------------
  // MAGNET
  
  if (do_magnet) radius = Magnet(g4Reco, radius, 0, absorberactive);

  //----------------------------------------
  // HCALOUT
  
  if (do_hcalout) radius = HCalOuter(g4Reco, radius, 4, absorberactive);

  //----------------------------------------
  // sPHENIX forward flux return door
  if (do_plugdoor) PlugDoor(g4Reco, absorberactive);

  //----------------------------------------
  // BLACKHOLE
  
  // swallow all particles coming out of the backend of sPHENIX
  PHG4CylinderSubsystem *blackhole = new PHG4CylinderSubsystem("BH", 1);
blackhole->set_double_param("radius",radius + 10); // add 10 cm

  blackhole->set_int_param("lengthviarapidity",0);
  blackhole->set_double_param("length",g4Reco->GetWorldSizeZ() - no_overlapp); // make it cover the world in length
  blackhole->BlackHole();
  blackhole->set_double_param("thickness",0.1); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  //----------------------------------------
  // FORWARD BLACKHOLEs
  // +Z
  blackhole = new PHG4CylinderSubsystem("BH_FORWARD_PLUS", 1);
  blackhole->SuperDetector("BH_FORWARD_PLUS");
  blackhole->set_double_param("radius",0); // add 10 cm
  blackhole->set_int_param("lengthviarapidity",0);
  blackhole->set_double_param("length",0.1); // make it cover the world in length
  blackhole->set_double_param("place_z",g4Reco->GetWorldSizeZ()/2. - 0.1  - no_overlapp);
  blackhole->BlackHole();
  blackhole->set_double_param("thickness",radius - no_overlapp); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  blackhole = new PHG4CylinderSubsystem("BH_FORWARD_NEG", 1);
  blackhole->SuperDetector("BH_FORWARD_NEG");
  blackhole->set_double_param("radius",0); // add 10 cm
  blackhole->set_int_param("lengthviarapidity",0);
  blackhole->set_double_param("length",0.1); // make it cover the world in length
  blackhole->set_double_param("place_z", - g4Reco->GetWorldSizeZ()/2. +0.1  + no_overlapp);
  blackhole->BlackHole();
  blackhole->set_double_param("thickness",radius - no_overlapp); // it needs some thickness
  blackhole->SetActive(); // always see what leaks out
  blackhole->OverlapCheck(overlapcheck);
  g4Reco->registerSubsystem(blackhole);

  PHG4TruthSubsystem *truth = new PHG4TruthSubsystem();
  g4Reco->registerSubsystem(truth);
  se->registerSubsystem( g4Reco );
  return 0;
}
コード例 #6
0
vec2f Camera2D::clickMagnet(const vec2i &now) const
{
    vec2f cpos = click(now);
    Magnet(cpos);
    return cpos;
}